我刚刚意识到我误解了el
的属性Backbone.View
。基本上我的观点需要动态id
基于其模型属性的属性。我认为我可以正常工作,因为我只是在模板中指定了它:
<script type="text/template" id="item_template">
<li class="item" id="{{identifier}}">
<span class="name">{{name}}</span>
</li>
</script>
然而,我意识到 Backbone 实际上所做的是将这个编译后的模板放入另一个元素中,div
默认情况下。我通过阅读文档了解了更多相关信息,但我仍然对如何创建动态感到困惑id
.
最好,我很想找到一种方法来使上面模板中的内容成为我的el
,因为它已经拥有我想要的一切,但我不知道这是否可能。所以我想知道是否有一种方法可以很简单地指定动态id
属性。
我尝试将其设置在initialize
方法,this.id = this.model.get('attr')
但似乎并没有什么效果,可能是因为这个时候已经太晚了。
我目前正在做的只是使用 jQuery 添加id
在期间render()
:
this.el.attr(id: this.model.get('identifier'));
它确实有效,但当然,我只是想问是否有一种首选方法可以通过 Backbone 实现这一点。
是的,在 Backbone 中有一个标准方法可以做到这一点。你可以通过id
到视图构造函数。您还可以重构模板,以便 Backbone 创建父模板<li>
给你的元素。尝试这个更简单的模板:
<script type="text/template" id="item_template">
<span class="name">{{name}}</span>
</script>
并将这些添加到您的视图中:
myView = Backbone.View.extend({
className: "item",
tagName: "li"
})
并像这样实例化它:
var view = new YourView({
model: mymodel,
id: mymodel.get('identifier') // or whatever
})
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)