模特应该知道它的收藏吗?

时间:2012-06-28 11:02:14

标签: backbone.js

一个集合知道它的模型,但模型有没有办法到达它的集合?

我需要一种方法来获取集合中的“相邻”模型。以下内容可以更好地了解问题:

我正在尝试实现一个简单的应用程序,该应用程序根据模型中的“优先级”属性对项目进行排名,并维护它们的列表。每个模型视图都有用于增加或减少优先级的按钮,这些按钮应相应地改变列表的顺序。 只要优先级属性是连续的,只需在当前值中添加或减去一个值即可,例如:

1,2,3,4,5,6

但是还有一个删除按钮,允许从列表中删除任何模型。它可以导致优先级属性,如:

1,2,5,6

现在将优先级5更改为4不会更改列表的顺序,因为它仍然大于2。

1 个答案:

答案 0 :(得分:4)

它没有记录,但模型将自动具有指向集合的collection属性。如果一个模型在多个集合中,我不知道它是如何工作的细节(也许collection属性一旦设置就不会改变。)

要解决您提到的具体问题,您可以在集合上侦听remove个事件,并相应地调整内容。在这种情况下,您甚至不需要collection属性,因为模型和集合都将传递给remove侦听器。

var handler = function ( model, collection, options ) {

  // ...

};

collection.on( 'remove', handler );

Backbone.Collection docs也这样说:

  

从集合中删除模型的索引可以options.index

获得

options侦听器的remove参数未记录在remove侦听器的签名为documented的情况下,但是它被传递(无论如何都是0.9.2)。< / p>