Backbone 的模型更改事件和 collections

Backbone's change event for models and collections

我在网上搜索无果-有什么区别:

this.listenTo(this.collection, 'add reset remove', this.render);

…和:

this.listenTo(this.collection, 'change', this.render);

我正在尝试找出 change 事件封装的内容。很难找到这些信息。

此外,在 this.render 回调中 - 我如何找出更改的内容?我必须自己检查 Backbone model/collection 还是有更高级别的方法来做到这一点?

带注释的 Backbone 源代码非常适合解决此类问题。

根据 http://backbonejs.org/docs/backbone.html#section-144,只要集合中的模型发生更改,就会触发 'change' 事件。

更改事件的触发参数与在模型上触发的参数相同,其中更改的模型将是触发事件的参数之一 (http://backbonejs.org/docs/backbone.html#section-73). You can check what was changed by calling changedAttributes on the model (http://backbonejs.org/docs/backbone.html#section-77)。但是,重置似乎也不一定会触发更新。

添加、重置和删除似乎是在与收集更改完全不同的情况下触发的。您可能正在寻找 "update",它会在集合中的元素数量发生变化时触发:http://backbonejs.org/docs/backbone.html#section-118