0

我通过运行 collection.fetch() 方法初始化了一个主干集合,然后过了一会儿,我要求集合再次获取以刷新模型。那么,是否有任何来自 Model 的事件被触发,我可以从 View 订阅以删除/更新视图。

4

1 回答 1

2

没有特定的“集合已重新获取”事件,但您不需要。fetch重置集合:

fetch collection.fetch([options])
[...]
当模型数据从服务器返回时,集合将重置

reset触发一个"reset"事件:

reset collection.reset(models, [options])
[...]
使用reset将集合替换为新的模型列表(或属性哈希),"reset"最后触发单个事件。

因此,只需侦听"reset"集合中的事件并在获得事件时重新渲染视图。


fetchBackbone 1.0 中更改的行为,来自ChangeLog

  • 将 Collection 的“更新”重命名为set,用于与相似的并行性model.set(),并与reset进行对比。它现在是fetch之后的默认更新机制。如果您想继续使用“重置”,请通过{reset: true}.

如果我们看set

collection.set(models, [options])

set 方法使用传递的模型列表对集合执行“智能”更新。如果列表中的模型尚未在集合中,它将被添加;如果模型已经在集合中,它的属性将被合并;如果集合包含列表中不存在的任何模型,它们将被删除。发生这种情况时会触发所有适当"add""remove"、 和"change"事件。

因此,您可以说collection.fetch({ reset: true })是否要继续使用该"reset"事件,或者您可以collection.fetch()监听单个"add""remove""change"事件。

于 2012-11-07T17:09:45.800 回答