【问题标题】:can't catch Backbone Collection reset event无法捕获 Backbone Collection 重置事件
【发布时间】:2013-05-14 07:59:40
【问题描述】:

我偶然发现了一些很奇怪的东西

我正在获取一个集合,并监听重置事件,但不知何故该事件丢失了

我有这个最小的例子:

$(function() {
  var collection = new Backbone.Collection();
  collection.url = 'http://localhost:9000/api/Usuario';
  collection.on('reset', function() {
    console.log('collection reset!');
  });
  collection.fetch();
});

查看网络可以看到请求成功,web服务返回json数据

但是 cosole.log('collection reset!') 回调无法执行。

一定是我错过了什么非常愚蠢的东西......

【问题讨论】:

  • 你是对的!现在我会问我如何才能捕获完成获取数据的集合的事件
  • 您可以覆盖 Backbone.Collection 类中的默认解析方法,以任何您想要的方式返回/操作数据。
  • @opensas 有一个sync 事件

标签: web-services backbone.js collections


【解决方案1】:

来自Backbone documentation

It uses set to (intelligently) merge the fetched models, unless you pass {reset: true},

所以我想,使用它会解决你的问题。

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

【讨论】:

  • 是的,我意识到这一点,我只是想知道您的默认方式是什么。奇怪的是,在发出所有更改(添加、销毁、更新)之后,它们不会触发“获取”事件或类似事件
  • 我认为当我们有成功处理程序时不需要“获取事件”。检查此backbonejs.org/#Collection-fetch 您可以定义一个成功处理程序,并且您可以做任何您想做的事情。更新我的代码。检查一下。
猜你喜欢
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-19
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多