2014-10-07 113 views
2

我們遇到了骨幹的一個基本問題:如果我將相同的模型添加到集合A和B A.add()B.add(),然後我從集合A中刪除它A.remove(),刪除事件在集合B聽到的模型上觸發,因此模型也從集合B中刪除。有沒有一種圍繞這種默認行爲的首選方式?我們每次操作這些集合時都必須指定{silent: true},還是有更好的方法?如何從一個集合中刪除骨幹模型

感謝, -mykle-

+1

你能澄清你會通過_「的模式是從集合體B刪除以及」是什麼意思_?你的''remove''事件偵聽器是否從集合B中刪除模型,或者模型是否被自動刪除(沒有你的動作)? – hindmost 2014-10-08 12:14:41

回答

0

你需要重寫你的模型改變方法,當你進行初始化。

Ship = Backbone.Model.extend({ 
    defaults: { 
     name:'titanic', 
     cas: new Array() 
    }, 
    initialize: function() { 
     this.on('change:cas', this.notify, this); 
     this.on('change', this.notify, this); 
    }, 
    notify: function() { 
     console.log('cas changed'); 
    }, 
    notifyGeneral: function() { 
     console.log('general change'); 
    } 
}); 

這是具有兩個更改事件的模型的一個很好的示例。您需要檢查模型的集合名稱並相應地更改或不更改。在這裏,你可能會做這樣的事情:

initialize: function() { 
    this.on('change', this.notify, this); 
}, 
notify: function() { 

    console.log('cas changed'); 
    if(this.collection.id = 'CollectionB'){ 
     return true; 
    }else{ 
     return false; 
    } 
} 

這裏有一個很好的參考:

Backbone.js : change not firing on model.change()