根据这里的文档:当http://documentcloud.github.com/backbone/#FAQ-events我执行某项操作以将集合与服务器同步时,www.example.com集合触发了同步事件。我尝试对集合调用fetch方法并等待其上的同步事件,但它从未发生。触发了添加事件,但在同步集合中的所有项后,我只需要一个事件即可更新相应的视图。是否有其他方法可以触发此事件?
3mpgtkmj1#
解决方案是在作为参数传递给fetch方法的“success”回调中手动触发同步事件。
this.collection.fetch({add: true, success: function(collection, response){ collection.trigger('sync'); }});
qvk1mo1f2#
我相信“sync”事件只在你改变一个模型时才会被激发。所以如果你创建,更新或删除一个模型,那么“sync”事件就会被激发。在您的情况下,我认为您希望侦听集合上的“reset”事件。编辑:如果你设置了{add:true}选项,那么在所有的模型都被添加后,没有一个单独的Backbone事件会被触发。1.只需侦听add事件,并期待它被重复调用1.使用已通过_.debounce()函数进行去抖处理的处理程序模拟单个事件。
{add:true}
add
_.debounce()
fetch()
myCollection.fetch({add:true}).done(function(){ myView.render(); //or whatever });
2条答案
按热度按时间3mpgtkmj1#
解决方案是在作为参数传递给fetch方法的“success”回调中手动触发同步事件。
qvk1mo1f2#
我相信“sync”事件只在你改变一个模型时才会被激发。所以如果你创建,更新或删除一个模型,那么“sync”事件就会被激发。
在您的情况下,我认为您希望侦听集合上的“reset”事件。
编辑:如果你设置了
{add:true}
选项,那么在所有的模型都被添加后,没有一个单独的Backbone事件会被触发。1.只需侦听
add
事件,并期待它被重复调用1.使用已通过
_.debounce()
函数进行去抖处理的处理程序模拟单个事件。fetch()
的返回值是一个jQuery XMLHttpRequest对象。它实现了jQuery Deferred接口。因此,您可以监听该完成。例如: