2012-07-13 113 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函數。