【发布时间】:2015-09-18 06:10:52
【问题描述】:
我正在尝试在 Backbone 中创建一个简单的列表,但遇到了一个奇怪的问题。这是我第一次使用下划线模板,所以我不确定这是否是原因。这似乎是一个简单的问题,但我无法弄清楚。
我有一个具有name 和band 属性的主干模型。当我只让它渲染name 时,如下所示,它成功地渲染了一个名称列表。
var template = _.template("<h2><%= name %></h2><br><h3></h3>")
这渲染得很好。但是当我对band 变量进行任何迭代时,它会抛出错误Uncaught ReferenceError: band is not defined,我不知道为什么。它从我传递的属性对象中获取名称的引用。为什么它看到name 而不是band?
完整代码如下。
var Album = Backbone.Model.extend({
defaults: {name: "The Album", band: "The Band"}
});
var albumOne = new Album({name: "SGT PEPPER", band: "The Beatles"});
//Eight more album instances here
var template = _.template("<h2><%= name %></h2><br><h3><%=band%></h3>")
var AlbumCollection = Backbone.Collection.extend({
model: Album,
initialize: function(){
this.render()
},
render: function(){
this.each(function(item){
new tempView(item);
});
}
});
var tempView = Backbone.View.extend({
tagName: 'li',
template: template(),
initialize: function(){
this.render();
},
el: $("#shuff"),
render: function(){
this.$el.append(template(this.attributes))
}
});
window.myCollection = new AlbumCollection([albumOne, albumTwo, albumThree, albumFour,albumFive,albumSix,albumSeven,albumEight,albumNine]);
window.myCollection.render();
【问题讨论】:
标签: javascript backbone.js underscore.js