backbone.js から始めて、backbone-boilerplate を使用して最初のプロジェクトを構築しています。
次のビューを持つNavitemという名前のモジュールがありますSidebar。
Navitem.Views.Sidebar = Navitem.Views.Layout.extend({
template: "navitem/sidebar",
tagName: 'ul',
beforeRender: function()
{
var me = this;
this.options.navitems.each(function(navitem)
{
//insertView from Layout datatype
me.$el.append(new Navitem.Views.Item({
model: navitem //select the 'ul' in sidebar view and append an Item with model navitem
}).render().el);
});
return this;
}
});
サイドバーが構築されると、多数の を含むコレクションがサイドバーNavitem.Modelに渡されます。デバッグ後、model:navitem正しく動作しているようで、正しいnavitemモデルをnew Navitem.Views.Item({...}). そのクラスは次のようになります。
Navitem.Views.Item = Navitem.Views.Layout.extend({
tagName: 'li',
template: 'navitem/default'
events: {
click: "navRoute"
},
navRoute : function()
{
app.router.go(this.model.get('target'));
return this;
}
});
テンプレートは次のようになり<a href="#"><%= model.get('label') %></a>ます。
なんらかの理由Item.render()で、最初のコード ブロックを呼び出すとmodel、ビューで未定義であると泣き言を言います。なぜこれが起こっているのか理解できないようです。何かご意見は?