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)可能会丢失.
这一切看起来有点笨拙......
谢谢 !
我不确定我是否完全掌握了你想要做的事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属性放在模板中,则可以考虑以下某种形式: