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
、ビューで未定義であると泣き言を言います。なぜこれが起こっているのか理解できないようです。何かご意見は?