2012-07-13 111 views
7

骨干重置事件如何工作? 据我了解集合中的骨干重置事件

  1. 取下收集
  2. 全系车型添加新的“牵强”模式,以收集
  3. 火灾复位事件

在我的情况下,每个模型对SVG画东西,以便在从集合中删除模型之前,我应该调用remove函数。从模型中删除模型时触发哪个事件?

回答

9

正如@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/

3

你是对的,reset被删除旧模型已被删除,并添加新的模型。

当模型通过reset方法从集合中删除时,没有发生事件。

您可能需要在集合之外保留对旧模型的引用,然后当重置事件被触发时,您将引用这些模型,以便您可以在SVG上为它们调用remove函数。