【发布时间】:2011-11-16 12:06:31
【问题描述】:
我有一个标准的 Backbone.js 集合,定义如下:
class Observation extends Backbone.Model
class Observations extends Backbone.Collection
model: Observation
然后我在集合的重置事件的事件处理程序中绑定这样的添加事件:
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”引用不同。
以前有没有其他人看到过这种情况,或者他们能指出我做错了什么?
【问题讨论】:
-
你在哪里打电话
@collection.bind 'add', @elementAdded? -
我已经更新了问题。我已经尝试在视图的初始化程序和上面概述的重置事件处理程序中添加绑定。
-
您是否为回调设置了正确的范围?见:documentcloud.github.com/backbone/#FAQ-this
-
我已经尝试添加额外的参数,但仍然没有雪茄。我已经用粗箭头语法声明了事件处理程序 elementAdded: (item) => 所以我认为无论如何都会被覆盖。
-
抱歉,我不太熟悉 Coffeescript。比较失败时
this的值是多少?
标签: events backbone.js coffeescript