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