如何仅从一个集合中删除主干模型

How to remove a backbone model from only one collection

本文关键字:集合 删除 模型 一个 何仅      更新时间:2023-09-26

我们遇到了Backbone的一个基本问题:如果我将相同的模型添加到集合a和集合B A.add()B.add(),然后用A.remove()将其从集合a中删除,则会在集合B听到的模型上触发删除事件,因此该模型也会从集合B中删除。有没有一种首选的方法来绕过这种默认行为?我们每次操作这些集合时都必须指定{silent: true}吗?或者有更好的方法吗?

谢谢,-mykle-

初始化模型时,需要覆盖模型上的更改方法。

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未在模型上启动。change()