我有一系列模特。 我想为该集合中的所有模型呈现相同的视图,除了视图应该是唯一的模型。
通常情况下,我会使用CollectionView为整个集合渲染相同的ItemView,但在我的情况下这不起作用。
我想到的选项是:
哪个选项更好?还有其他建议吗?
答案 0 :(得分:2)
我有一个类似的用例,带有一组嵌套的集合。我正在使用CompositeView递归渲染树的所有节点,每个节点可能需要稍微不同的模板。通过使用getTemplate
方法,我可以检查模型并使用几种不同模板中的一种。几乎是@David概述的内容,但这是一个例子:
getTemplate: function(){
var template;
switch (this.model.get('type')) {
case 'film':
template = 'film';
break;
case 'item':
template = 'item';
break;
case 'year':
case 'decade':
template = 'node';
break;
}
return template;
},
答案 1 :(得分:0)
我会考虑你的第二个想法:使用一个接收“特殊模型”和集合的复合视图。
但是,如果您有一个需要区别对待的模型,您可能需要重新考虑您的数据结构。这似乎是一个不寻常的设置,但也许有更好的方法来解决这个问题。