检测何时获取主干集合(Backbone 1.0.0)

ope*_*sas 10 backbone.js backbone.js-collections

最新版本的Backbone中有一种新行为(1.0.0,其中在获取Collection后,默认情况下不再触发重置事件.

http://backbonejs.org/#changelog

重命名Collection的"更新"以设置,与类似的model.set()并行,并与reset对比.它现在是获取后的默认更新机制.如果您想继续使用"重置",请通过{reset:true}.

问题是我想在最终获取集合时捕获事件(确实非常常见!)

我可以听取添加,删除和更改事件,但如果集合是空的,我不知道如何捕获事件.

那么,什么是新的,推荐的方式来捕获收集请求何时完成,或者它是否通过{reset = true}实现它的唯一方法?

ps:这是原始问题,BTW 无法捕获Backbone Collection重置事件

nik*_*shr 23

来自Backbone.sync doc,

每当模型或集合开始与服务器同步时,都会发出"请求"事件.如果请求成功完成,您将收到"同步"事件,如果没有,则收到"错误"事件.

例如,

var C = Backbone.Collection.extend({
    url: '/echo/json/'
});

var c = new C();
c.on('sync', function() {
    console.log('sync');
});
c.fetch();
Run Code Online (Sandbox Code Playgroud)

和演示http://jsfiddle.net/nikoshr/GLATm/


sac*_*024 10

当我们调用fetch集合时,我们可以将方法作为成功处理程序传递,并且正如您所说的那样,当发生[添加,删除,更新或重置]所有内容时,您只想执行某些操作,您可以在此成功处理程序中执行此操作.

collection.fetch({
  success: function() {
    // Do Something
    // This is called when all add, remove and update operations have been done
  }
});
Run Code Online (Sandbox Code Playgroud)

注意:无论您是否通过,都会执行成功处理程序reset:true.无论您的集合是否为空,当所有添加,删除和更新事件都发生时,它将在最后一步调用.

如果它不能解决您的问题,请告诉我.