Backbone.js:添加未触发的集合事件

时间:2011-11-16 12:06:31

标签: events backbone.js coffeescript

我有一个标准的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'参考不同。

有没有其他人看到过这种情况,或者他们能否指出我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的代码中有几个可疑的东西;你的collectionReset方法接受一个collection参数,但是看起来你尝试使用@collection绑定它,这是不同的。如果你真的想在参数" collection"上调用bind。传递后,您需要使用collection.bind,而不是@collection.bind

我主要将模型类(包括集合)中的事件绑定到视图,在这种情况下,您通常只是引用模型进行绑定,即调用@model.bind 'add', someMethod。从定义Observations的代码中,您似乎应该尝试类似的东西。