集合中的Backbone.js同步事件

lokaqttq  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(212)

根据这里的文档:当http://documentcloud.github.com/backbone/#FAQ-events我执行某项操作以将集合与服务器同步时,www.example.com集合触发了同步事件。我尝试对集合调用fetch方法并等待其上的同步事件,但它从未发生。触发了添加事件,但在同步集合中的所有项后,我只需要一个事件即可更新相应的视图。是否有其他方法可以触发此事件?

3mpgtkmj

3mpgtkmj1#

解决方案是在作为参数传递给fetch方法的“success”回调中手动触发同步事件。

this.collection.fetch({add: true, success: function(collection, response){
            collection.trigger('sync');
}});
qvk1mo1f

qvk1mo1f2#

我相信“sync”事件只在你改变一个模型时才会被激发。所以如果你创建,更新或删除一个模型,那么“sync”事件就会被激发。
在您的情况下,我认为您希望侦听集合上的“reset”事件。
编辑:如果你设置了{add:true}选项,那么在所有的模型都被添加后,没有一个单独的Backbone事件会被触发。
1.只需侦听add事件,并期待它被重复调用
1.使用已通过_.debounce()函数进行去抖处理的处理程序模拟单个事件。

  1. fetch()的返回值是一个jQuery XMLHttpRequest对象。它实现了jQuery Deferred接口。因此,您可以监听该完成。例如:
myCollection.fetch({add:true}).done(function(){
    myView.render(); //or whatever
});

相关问题