Backbone 重置事件如何工作?据我所理解
- 从集合中删除所有模型
- 将新“获取”的模型添加到集合中
- 触发重置事件
在我的情况下,每个模型都在 SVG 上绘制一些东西,所以我应该在从集合中删除模型之前调用 remove 函数。从集合中删除模型时会触发哪个事件?
Backbone 重置事件如何工作?据我所理解
在我的情况下,每个模型都在 SVG 上绘制一些东西,所以我应该在从集合中删除模型之前调用 remove 函数。从集合中删除模型时会触发哪个事件?
正如@Paul 所指出的,在reset
. reset
但是,您可以通过覆盖集合上的方法来提供自己的方法。例如,
var SVGCollection = Backbone.Collection.extend({
reset: function(models, options) {
options = options || {};
if (!options.silent) {
this.trigger('prereset', this, options);
}
Backbone.Collection.prototype.reset.call(this, models, options);
}
});
和一个示例用法
var c = new SVGCollection([
{id: 1},
{id: 2}
]);
c.on('prereset', function() {
console.log(c.pluck('id'));
});
c.on('reset', function() {
console.log(c.pluck('id'));
});
c.reset({id: 3});
有关演示,请参见http://jsfiddle.net/nikoshr/8vV7Y/
您还可以在每个模型上触发事件。
你是对reset
的,在旧模型被删除并添加新模型后被解雇。
reset
通过该方法从集合中删除模型时不会触发事件。
您可能必须在集合之外保留对旧模型的引用,然后在触发重置事件时,您将引用这些模型,以便您可以在 SVG 上为它们调用删除函数。