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() {
}
});