View Backbone.js视图的模板化问题:this.el属性
我正在尝试找到渲染li元素的最佳方法: 我读到我应该永远替换View Backbone.js视图的模板化问题:this.el属性,view,rendering,backbone.js,jquery-templates,View,Rendering,Backbone.js,Jquery Templates,我正在尝试找到渲染li元素的最佳方法: 我读到我应该永远替换这个.el 因此,我似乎必须在我的LiViewrender()函数中打开模板: // replace element content with html generated from template var $rendered = $.tmpl(this.template, this.model.toJSON()); this.el.html($rendered.unwrap().html()); 我只得到$renderedli中的
这个.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'));
但它取代了属性。。。有些(比如jqueryui-draggable)可能会丢失
这一切似乎有点笨重
谢谢 我不确定我是否完全理解了你想做的事情,但无论如何,我会尝试回答你的问题:) 您有一个liView,它对应于LIDOM元素 所以您需要指定
el: "li"
模板中没有li。然后渲染的结果将是
<li>
contents of template
</li>
如果需要向根(li)元素添加其他属性
如果这对你不起作用,并且你想把Li属性放在模板中,也许可以考虑以下几种形式:
我很好奇你在哪里读到过你永远不应该替换
这个.el
。不改变它似乎很有道理,但我不得不这么做,原因正是你在这里概述的。很遗憾,不能用模板obj实例化视图。无论如何,在实践中替换this.el
效果相当好(尽管感觉很脏),只要您在执行此操作后调用this.delegateEvents
。@idbentley-如果我重新分配el,即使调用this.delegateEvents,我的事件也会中断
className: "ui-draggable myGreatClass ui-corner-all"
$(el).attr("title","your title")