当重新获取Collection时,是否会触发Backbone.js模型中的事件

时间:2012-11-07 16:50:30

标签: backbone.js backbone.js-collections

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

1 个答案:

答案 0 :(得分:2)

没有特定的“收集已被收回”活动,但您不需要。 fetch重置了集合:

  

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

reset会触发"reset"事件:

  

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

所以只需从集合中侦听"reset"个事件,并在获得视图时重新渲染视图。


fetch的行为在Backbone 1.0中从ChangeLog

更改
  
      
  • 将集合的“更新”重命名为 set ,以获得与类似model.set()的并行性,并与重置形成对比。它现在是 fetch 之后的默认更新机制。如果您想继续使用“重置”,请传递{reset: true}
  •   

如果我们看一下set

  

设置 collection.set(models, [options])

     

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

因此,如果您想继续使用collection.fetch({ reset: true })事件,可以说"reset",或者collection.fetch()可以说"add""remove""change"事件。