2011-04-25 87 views

回答

16

骨幹正在檢查設定值是否與以前的值相同(看https://github.com/documentcloud/backbone/blob/master/backbone.js#L210等)。

在你的例子中,數組仍然是相同的,但裏面的值已經改變了。這很難解決。創建數組的新副本似乎是開銷。我會建議直接在採用函數調用改變事件作爲一個解決方案:

adopt: function(newChildsName){ 
    var children_array = this.get('children'); 
    children_array.push(newChildsName); 
    this.set({children:children_array}); 
    this.trigger("change:children"); 
} 

我建議建立對骨幹網的github倉庫中的問題可能添加一個「力」選項來強制更新(從而觸發事件)模型上的屬性。

+0

謝謝julien,觸發方法的作品 – p0larBoy 2011-04-26 02:56:21

4

這是一個有點尷尬的解決方案:

adopt: function(newChildsName){ 
    var children_array = this.get('children').splice(0); 
    children_array.push(newChildsName); 
    this.set({children:children_array}); 
} 
1

而不是使用兒童作爲一個普通數組,我們可以使用它作爲一個收集和聽取添加的,刪除收集的事件。