Backbone.js视图的模板问题:this.el属性

Oli*_*ier 2 rendering view jquery-templates backbone.js

我正在尝试找到渲染li元素的最佳方法:

我读过我永远不应该替换this.el

所以我似乎必须在我的LiView render()函数中解开我的模板:

// replace element content with html generated from template
var $rendered = $.tmpl(this.template, this.model.toJSON());
this.el.html($rendered.unwrap().html());
Run Code Online (Sandbox Code Playgroud)

我只是得到里面的内容$rendered,因为我不应该替换它.

但我应该如何转移属性?

我试过了 :

this.el.attr('class', $rendered.attr('class'));
this.el.attr('title', $rendered.attr('title'));
Run Code Online (Sandbox Code Playgroud)

但它取代了属性......而有些(如jQuery ui ui-draggable)可能会丢失.

这一切看起来有点笨拙......

谢谢 !

34m*_*4m0 5

我不确定我是否完全掌握了你想要做的事Olouv,但我会不顾一切地回答你的问题:)

你有一个liif对应一个li dom元素所以你需要指定

el: "li"
Run Code Online (Sandbox Code Playgroud)

模板中没有li.然后渲染的结果将是

<li>
    contents of template
</li>
Run Code Online (Sandbox Code Playgroud)

现在要为此li元素添加属性?类名非常简单,只需将className属性添加到视图中即可

className: "ui-draggable myGreatClass ui-corner-all"
Run Code Online (Sandbox Code Playgroud)

如果需要向root(li)元素添加其他属性

$(el).attr("title","your title")
Run Code Online (Sandbox Code Playgroud)

如果这对您不起作用,并且您希望将li属性放在模板中,则可以考虑以下某种形式:

  1. 容忍表单的HTML:
  2. 而不是liView(列表项视图),只需要一个ulView(列表视图),并在模板中放置一个循环结构