我有一个标准的Backbone.js集合,如下所示:
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
collection参数与'this'参考不同。
有没有其他人看到过这种情况,或者他们能否指出我做错了什么?
答案 0 :(得分:0)
你的代码中有几个可疑的东西;你的collectionReset方法接受一个collection
参数,但是看起来你尝试使用@collection
绑定它,这是不同的。如果你真的想在参数" collection"上调用bind。传递后,您需要使用collection.bind
,而不是@collection.bind
。
我主要将模型类(包括集合)中的事件绑定到视图,在这种情况下,您通常只是引用模型进行绑定,即调用@model.bind 'add', someMethod
。从定义Observations
的代码中,您似乎应该尝试类似的东西。