问题描述
||
我正在尝试找到渲染li-element的最佳方法:
我已经读过,我永远也不能取代
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)可能会丢失。
这一切似乎有点笨拙...
谢谢 !
解决方法
我不确定我是否完全掌握了您要执行的操作Olouv,但是无论如何,我都会努力回答您的问题:)
您有一个与lidom元素相对应的liView
所以你需要指定
el: \"li\"
模板中没有li。然后,渲染结果将是
<li>
contents of template
</li>
现在您要向此li元素添加属性吗?
类名非常简单,只需将className属性添加到视图中
className: \"ui-draggable myGreatClass ui-corner-all\"
如果您需要向根(li)元素添加其他属性
$(el).attr(\"title\",\"your title\")
如果那对您不起作用,并且您想在模板中放入li属性,则可以考虑以下形式:
容许形式的HTML:
代替liView(列表项视图),只需拥有ulView(列表视图),然后在模板中放入循环结构即可