我有一系列模型。我想为该集合中的所有模型呈现相同的视图,除了一个视图应该是唯一的。
通常,我会使用 CollectionView 为整个集合呈现相同的 ItemView,但这在我的情况下不起作用。
我想到的选项是:
- 对所有模型使用相同的 ItemView,但其中包含一些为特定模型呈现不同内容的逻辑。
- 使用 CompositeView 获取没有唯一模型的集合,并将该唯一模型作为其模型。然后以一种方式渲染集合,以另一种方式渲染模型。
哪个选项更好?还有其他建议吗?
我有一系列模型。我想为该集合中的所有模型呈现相同的视图,除了一个视图应该是唯一的。
通常,我会使用 CollectionView 为整个集合呈现相同的 ItemView,但这在我的情况下不起作用。
我想到的选项是:
哪个选项更好?还有其他建议吗?
我有一个类似的用例,其中包含一组嵌套的集合。我正在使用 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;
},
我会同意你的第二个想法:使用接收“特殊模型”和集合的复合视图。
但是,如果您有一个模型需要区别对待,您可能需要重新考虑您的数据结构。这似乎是一个不寻常的设置,但也许有更好的方法来解决这个问题。