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

时间:2011-05-26 17:58:02

标签: view rendering backbone.js jquery-templates

我正在尝试找到渲染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)可能会丢失。

这一切似乎有点笨拙......

谢谢!

1 个答案:

答案 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属性放在模板中,则可以考虑以下某种形式:

  1. 容忍表单的HTML:
  2. 而不是liView(列表项视图),只需要一个ulView(列表视图),并在模板中放置一个循环结构