我正在将 Backbone.js 集成到一个项目中,并且在制作侧边栏的集合时遇到了一些问题。
有争议的问题是如何将 Smarty html-markup 生成的模型转换为模型集合。通常的解决方案是在前端使用模板,但在我的情况下它是不真实的。
我的侧边栏的标记:
<div class="nav-blocks">
{foreach from=$mod.nodes item=section}
<div class="nav-block">
<h2>{$section.title}</h2>
<ul class="navigation">
{foreach from=$section.nodes item=i}
<li>{$i.title}</li>
{/foreach}
</ul>
</div>
{/foreach}
</div>
我想让每个都.nav-block
绑定到模型:
var Navigation = Backbone.Model.extend({
defaults: {
'visible': true
}
});
当从 View 触发事件时,模型更改属性可见:
var NavigationView = Backbone.View.extend({
el: $('.nav-block'),
events: {
'click h2': 'toggleVisible'
},
initialize: function() {
this.model.bind('change:visible', this.render, this);
},
toggleVisible: function() {
this.model.toggle('visible');
},
render: function() {
}
});