骨干视图可以有多个集合吗?

时间:2011-04-29 13:25:27

标签: javascript model-view-controller backbone.js

我刚刚开始使用骨干网,我正在尝试设置一个包含问题列表的视图。在列表的左侧,我有四个过滤器,按语言,国家/地区,状态和学习过滤列表。列表和每个过滤器都加载到它们自己的集合中。

我的想法是使用多个集合创建这个视图,但我想知道这是否是骨干网中的最佳实践,因为我看到的所有示例每个视图只有一个集合。

另一个想法是闯入两个视图,其中一个负责过滤器,然后子视图只负责问题列表。

或者,将所有集合放入模型中然后将该模型传递给我的视图就像是在这里提到的更为主干风格:http://documentcloud.github.com/backbone/#FAQ-nested

感谢您的想法。

3 个答案:

答案 0 :(得分:24)

是。从理论上讲,视图可以包含任意数量的内部对象/集合。让视图尽可能离散是很有意义的,但可能有理由在一个视图中包含多个视图。

这完全是设计问题。我不知道创建一个容器模型作为你的收藏品的桶是什么买的。

不要太在意绝对最好的方法。有时需要走错路,找出适合您特定项目的更好方法。

答案 1 :(得分:9)

我认为将多个模型或集合传递给视图是完全合法的 - 在适当的时候。

modelcollection传递给视图构造函数会自动将该对象附加到视图实例(因此它位于this.modelthis.collection)但您也可以传递其他数据,例如额外的集合,它们将位于options对象中(可在您的视图中作为this.options.countries访问,等等)。您的观点initialize方法(如果存在)也将传递给此对象。

答案 2 :(得分:1)

不确定最佳做法,但如果你可以将其分解为视图那么它的好处。否则,您最好创建一个包含多个集合的视图模型,并在视图中使用它们。