我有精灵集合和一组框架(每个框架中都有一个精灵的实例),如果在框架集合中使用它,我不想从sprite集合中删除精灵。
我已经考虑过监听remove事件,并且应该能够检测它是否在帧集合中,但是没有使用异常怀疑我可以阻止删除精灵。
我应该寻找什么样的事件,或者我应该寻找更复杂的事情?
答案 0 :(得分:3)
remove
方法的骨干来源:
remove: function(models, options) {
models = _.isArray(models) ? models.slice() : [models];
options || (options = {});
var i, l, index, model;
for (i = 0, l = models.length; i < l; i++) {
model = this.get(models[i]);
if (!model) continue;
delete this._byId[model.id];
delete this._byId[model.cid];
index = this.indexOf(model);
this.models.splice(index, 1);
this.length--;
if (!options.silent) {
options.index = index;
model.trigger('remove', model, this, options);
}
this._removeReference(model);
}
return this;
},
因此,没有“开箱即用”的方法可以防止删除元素。
为此,您可以扩展Backbone.Collection
并覆盖remove
方法:
var SpriteCollection = Backbone.Collection.extend({
remove: function(attrs, options) {
//Some your checks
return Backbone.Collection.prototype.remove.call(this, options);
}
});