0

我有一系列模型。我想为该集合中的所有模型呈现相同的视图,除了一个视图应该是唯一的。

通常,我会使用 CollectionView 为整个集合呈现相同的 ItemView,但这在我的情况下不起作用。

我想到的选项是:

  1. 对所有模型使用相同的 ItemView,但其中包含一些为特定模型呈现不同内容的逻辑。
  2. 使用 CompositeView 获取没有唯一模型的集合,并将该唯一模型作为其模型。然后以一种方式渲染集合,以另一种方式渲染模型。

哪个选项更好?还有其他建议吗?

4

2 回答 2

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;
},
于 2013-06-04T14:44:11.183 回答
0

我会同意你的第二个想法:使用接收“特殊模型”和集合的复合视图。

但是,如果您有一个模型需要区别对待,您可能需要重新考虑您的数据结构。这似乎是一个不寻常的设置,但也许有更好的方法来解决这个问题。

于 2013-06-04T12:48:36.013 回答