Events Backbone.js:添加集合未触发的事件
我有一个标准的Backbone.js集合,定义如下:Events Backbone.js:添加集合未触发的事件,events,backbone.js,coffeescript,Events,Backbone.js,Coffeescript,我有一个标准的Backbone.js集合,定义如下: class Observation extends Backbone.Model class Observations extends Backbone.Collection model: Observation 然后,我在集合的重置事件的事件处理程序中绑定add事件,如下所示: collectionReset: (collection) => @collection.bind 'add', @elementAdde
class Observation extends Backbone.Model
class Observations extends Backbone.Collection
model: Observation
然后,我在集合的重置事件的事件处理程序中绑定add事件,如下所示:
collectionReset: (collection) =>
@collection.bind 'add', @elementAdded
问题是没有触发该事件。我已经设置了一个断点并浏览了代码,下面的一行(backbone.js 0.5.3的627)阻止了add事件的触发:
_onModelEvent: function (ev, model, collection, options) {
if ((ev == 'add' || ev == 'remove') && collection != this) return;
具体的比较如下:
collection != this
集合参数与“this”引用不同
其他人以前见过这种情况吗,或者他们能指出我做错了什么吗?您的代码中有一些可疑的东西;collectionReset方法接受一个
collection
参数,但如果使用@collection
,则看起来您试图绑定它,这是不同的。如果确实要对传递的参数“collection”调用bind,则需要使用collection.bind
,而不是@collection.bind
我主要将事件从模型类(包括集合)绑定到视图,在这种情况下,您通常只需引用模型进行绑定,即调用
@model.bind'add',someMethod
。从您的代码定义观察结果来看,您似乎应该尝试类似的方法。您在哪里调用@collection.bind'add',@elementAdded
?我已经更新了问题。我已尝试在视图的初始值设定项和我上面概述的重置事件处理程序中添加绑定。是否为回调设置了正确的范围?请看:我已经尝试添加额外的参数,但仍然没有雪茄。我已经用fat-arrow语法声明了事件处理程序elementAdded:(item)=>所以我想这应该已经包括在内了。啊,对不起,我不太熟悉Coffeescript。进行失败比较时,此
的值是多少?