gpt4 book ai didi

javascript - 如何重写 Backbone Collection remove 方法然后调用 parent

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:18 26 4
gpt4 key购买 nike

我正在遵循 SO 和其他地方的帖子中的建议,但无法让它发挥作用。

我想覆盖所有 Backbone Collections 上的删除功能,以在删除所有模型后触发“删除”事件。

我试过这个:fiddle here

Backbone.Collection.prototype.remove = function(models, options){
console.log('removing');
Backbone.Collection.prototype.remove.call(this, models, options);
this.trigger('removed', models);
};

var MyColl = Backbone.Collection.extend({ });
var MyModel = Backbone.Model.extend({ });

var myColl = new MyColl();
var myModel = new MyModel();

myColl.add(myModel);
myColl.remove(myModel);

...但它似乎以递归方式调用自身并且从不触发父(基)删除方法。

如何正确覆盖remove方法并调用base方法?

最佳答案

您正在重写 remove,然后在 Backbones Collection 原型(prototype)上调用 remove,因此它会调用它自己。

相反,您应该在您的实现中覆盖它:

var MyCollection = Backbone.Collection.extend({
remove: function(models, options) {
// Do your stuff
// ..

// Call the parent
Backbone.Collection.prototype.remove.call(this, models, options)
}
});

您当然可以扩展 MyCollection 而不是 Backbone.Collection 以在其他 Controller 中继承此功能。

updated version of your fiddle

关于javascript - 如何重写 Backbone Collection remove 方法然后调用 parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21954099/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com