根据此处的文档:http ://documentcloud.github.com/backbone/#FAQ-events集合在我执行某些操作以将集合与服务器同步时触发了同步事件。我尝试在集合上调用 fetch 方法并等待其上的同步事件,但它从未发生过。添加事件被触发,但在同步集合中的所有项目后我只需要一个事件来更新相应的视图。还有另一种方法可以触发此事件吗?
问问题
13974 次
2 回答
5
解决方案是在作为参数传递给 fetch 方法的“成功”回调中手动启动同步事件。
this.collection.fetch({add: true, success: function(collection, response){
collection.trigger('sync');
}});
于 2012-05-25T15:34:29.300 回答
2
我相信只有在您更改模型时才会触发“同步”事件。因此,如果您创建、更新或删除模型,则会触发“同步”事件。
就您而言,我认为您想收听集合上的“重置”事件。
编辑:如果您正在设置{add:true}
选项,则在添加所有模型后不会触发单个 Backbone 事件。你有几个选择:
- 只听
add
事件并期望它被重复调用 - 使用已使用该
_.debounce()
函数去抖动的处理程序来模拟单个事件。 from 的返回值
fetch()
是一个 jQuery XMLHttpRequest 对象。它实现了jQuery Deferred接口。所以你可以听那个结尾。例如:myCollection.fetch({add:true}).done(function(){ myView.render(); //or whatever });
于 2012-05-25T15:15:28.220 回答