2011-11-16 45 views
0

我有這樣定義的標準Backbone.js的集合的集合的事件: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)是從射擊停止添加事件:

_onModelEvent: function (ev, model, collection, options) { 
    if ((ev == 'add' || ev == 'remove') && collection != this) return; 

而且它特別是下面的比較:

collection != this 

集合參數與'this'引用不同。

有沒有其他人看到過這種情況,或者他們能指出我做錯了什麼?

+1

你在哪裏調用'@collection.bind'add',@ elementAdded'? – fancy

+0

我已經更新了這個問題。我曾嘗試在視圖的初始化程序和上面列出的重置事件處理程序中添加綁定。 – dagda1

+0

您是否爲您的回撥設置了正確的範圍?請參閱:http://documentcloud.github.com/backbone/#FAQ-這 –

回答

0

您的代碼中存在一些可疑的事情;你的collectionReset方法需要collection參數,但是它看起來像你試圖綁定它,你使用@collection,這是不同的。如果你真的想調用綁定參數「集合」被傳遞,你需要使用collection.bind,而不是@collection.bind

我主要將模型類(包括集合)中的事件綁定到視圖,在這種情況下,通常只需引用模型進行綁定即調用@model.bind 'add', someMethod。從你的代碼定義Observations,似乎你應該嘗試類似的東西。