我首先从骨架.js开始使用骨干模板创建我的第一个项目。
我有一个名为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
在视图中未定义的提示。我似乎无法弄清楚为什么会这样。有什么想法吗? 最佳答案
可能与此处回答的内容有关:Backbone.js: Template variable in element attribute doesn't work
您需要将模型作为纯JSON传递到模板(除非您正在使用其他版本?)
希望这可以帮助!
关于javascript - Backbone.js模型未传递到 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14300884/