我正在尝试找到渲染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());
我只是获取$rendered
li中的内容,因为我不应该替换它。
但我应该如何转移属性?
我试过了:
this.el.attr('class', $rendered.attr('class'));
this.el.attr('title', $rendered.attr('title'));
但是它取代了属性......而且有些(比如jQuery ui ui-draggable)可能会丢失。
这一切似乎有点笨拙......
谢谢!
答案 0 :(得分:5)
我不确定我是否完全掌握了你想要做的事Olouv,但无论如何我都会有机会回答你的问题。)
你有一个与li dom元素对应的liView 所以你需要指定
el: "li"
模板中没有li。然后渲染的结果将是
<li>
contents of template
</li>
现在要为此li元素添加属性? 类名非常简单,只需将className属性添加到视图中
即可className: "ui-draggable myGreatClass ui-corner-all"
如果您需要向root(li)元素添加其他属性
$(el).attr("title","your title")
如果这对您不起作用,并且您希望将li属性放在模板中,则可以考虑以下某种形式: