Backbone重置事件如何工作?
据我所理解
据我所理解
>从集合中删除所有模型
>将新“已获取”模型添加到集合中
>点火重置事件
在我的情况下,每个模型在SVG上绘制一些东西,所以我应该在从集合中删除模型之前调用remove函数.从集合中删除模型时会触发哪个事件?
解决方法
正如@Paul所说,在重置之前没有触发预定义事件.但是,您可以通过覆盖集合中的重置方法来提供自己的方法.例如,
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/
您还可以在每个模型上触发事件.