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

问题描述

|| 我正在尝试找到渲染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(列表视图),然后在模板中放入循环结构即可