Javascript 主干-简单集合视图-can';不打印项目
这是一个非常简单的问题。我试图打印出集合中学生模型的每个实例。Javascript 主干-简单集合视图-can';不打印项目,javascript,backbone.js,backbone-views,Javascript,Backbone.js,Backbone Views,这是一个非常简单的问题。我试图打印出集合中学生模型的每个实例。printData函数中有一行:this.$el.append(model_view.el)我觉得我遗漏了什么。完整的JSFIDLE示例 嗯,您的CollectionView没有指定“el”,因此您不应该尝试向其添加任何内容。您的ModelViews将自己放在页面上,您不需要对它们做任何其他事情 现在,您有一个语法错误:去掉指定行中的.el。事实上,修复该行的最简单方法是对集合中的每个学生调用render(),并停止尝试将它们附加到某
printData
函数中有一行:this.$el.append(model_view.el)代码>我觉得我遗漏了什么。完整的JSFIDLE示例
嗯,您的CollectionView
没有指定“el”,因此您不应该尝试向其添加任何内容。您的ModelView
s将自己放在页面上,您不需要对它们做任何其他事情
现在,您有一个语法错误:去掉指定行中的.el
。事实上,修复该行的最简单方法是对集合中的每个学生调用render()
,并停止尝试将它们附加到某些内容
我相信您正在尝试显示所有项,而不仅仅是一项,因此每个项都应该将自己附加到其父元素中。。。调用.append(studentTemplate)
,而不是.html(studentTemplate)
看
// Model
var Student = Backbone.Model.extend({
defaults: {
name: '',
age: '',
major: '',
}
});
// Collection
ExampleCollection = Backbone.Collection.extend({
model: Student
});
// Model View
var ModelView = Backbone.View.extend({
el: $('.example-content'),
template: _.template( $('#example-target').html() ),
render: function(){
var studentTemplate = this.template(this.model.toJSON());
this.$el.html(studentTemplate);
}
});
// Collection View
var CollectionView = Backbone.View.extend({
render: function(){
this.collection.each(this.printData, this);
return this;
},
printData: function(target){
var model_view = new ModelView({ model: target });
this.$el.append(model_view.el);
}
});
var matt = new Student({name: 'Matt', age: 32, major: 'French'});
var nick = new Student({name: 'Nick', age: 27, major: 'Science'});
var ellen = new Student({name: 'Ellen', age: 63, major: 'Geriatrics'});
var studentList = new ExampleCollection([matt, nick, ellen]);
var collection_view = new CollectionView({ collection: studentList });
collection_view.render();