我有一个Backbone View,它使用Backbone Collection从api中提取数据:
var HousesView = Backbone.View.extend({
initialize: function() {
this.collection = new Houses();
var that = this;
this.collection.fetch({
data: {
pageSize: 50
},
success: function () {
that.render();
},
error: function () {
console.error('There was an error in fetch');
}
});
},
tagName: 'section',
template: Handlebars.getTemplate('houses'),
render: function() {
this.$el.html(this.template({ houses : this.collection.toJSON() }));
return this;
}
});
然后,它从从api中提取的json创建模型,并将其作为集合传递给我的模板,该模板获取每个模型,并且例如将该模型的name属性作为列表输出。这很好。
我的问题是:因为我正在使用模板解析来自this.collection.toJSON()
的数据tagName
我在HouseView
上设置似乎不会在html中输出。如果我使用View的模板,这是否意味着输出tagName
,className
等属性?
另外,理想情况下,我想为集合中的每个模型创建一个HouseView
,然后在包装器HousesView
中显示所有这些模型。
答案 0 :(得分:0)
在您的示例中,您使用的是自定义渲染。在这种情况下,tagName
,className
和id
的自动生成视图将被加标(在渲染函数中通过方法this.$el.html
覆盖。)。
最好的方法就是你提到创建单独的视图并将其附加到主视图渲染到html中。