请你帮助我做最好的练习吗?
我有一个从服务器返回的对象列表。 所有都具有相同的属性。 某些属性的值并不总是相同的(例如,属性“isBig”可以是“true”/“false”)。 基于属性值的组合,应用程序决定是否在页面上绘制“bigBox”或“smallBox”。
页面视图应包含一个框集合。
我猜应该有一个“bigBox”视图和一个“smallBox”视图,对吗? 我也应该保留两个型号吗?它们完全一样(除了它们的价值......) 我可以从模型中选择视图吗?
请指导我?
感谢。
答案 0 :(得分:2)
是的,我认为你走在正确的轨道上。您的数据完全相同,因此根据您希望如何显示该数据,您只有1个模型和单独的视图是有意义的
我建议:
在BoxesView的渲染功能中,当您遍历集合时,请检查IsBig,并相应地渲染每个视图。
//render function of BoxesView. Make sure to have a reference to
//your Boxes collection
render: function() {
var that = this;
this.collection.each(function(model) {
//depending on the isBig property render a different view
if(model.get("isBig") === true)
var bigView = new BigView({
model: model
});
that.$el.append(bigView.render().el);
// $el is the element you want to append all your boxes into
else {
var smallView = new SmallView({
model: model
});
that.$el.append(smallView.render().el);
}
}
}
或者取决于bigBox和smallBox应该行为的相似程度(它们是否显示完全相同的信息并具有完全相同的动作),只有一个BoxView才有意义在构建视图时传递不同的模板。