2012-07-13 12 views
7

Wie funktioniert das Backbone-Reset-Ereignis? Soweit ichBackbone-Reset-Ereignis in der Sammlung

  1. Entfernen Sie alle Modelle aus der Sammlung
  2. hinzufügen neu „geholt“ Modelle zur Sammlung
  3. Fires Reset Ereignis

In meinem Fall jedes Modell zurückgreifen SVG etwas verstehen, so Ich sollte die Funktion remove aufrufen, bevor ich das Modell aus der Sammlung entferne. Welches Ereignis wird ausgelöst, wenn das Modell aus der Sammlung entfernt wird?

Antwort

9

Wie @Paul bemerkt, gibt es kein vordefiniertes Ereignis vor einer reset gefeuert. Sie können jedoch Ihre eigenen angeben, indem Sie die reset-Methode in Ihrer Sammlung überschreiben. Zum Beispiel

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); 
    } 
}); 

und eine Probe Nutzung

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}); 

Siehe http://jsfiddle.net/nikoshr/8vV7Y/ für eine Demo

Sie auch Ereignisse für jedes Modell auslösen könnten.

3

Sie haben Recht, dass reset ausgelöst wird, nachdem die alten Modelle entfernt und die neuen Modelle hinzugefügt wurden.

Es wird kein Ereignis ausgelöst, wenn ein Modell mithilfe der reset-Methode aus einer Sammlung entfernt wird.

Möglicherweise müssen Sie einen Verweis auf die alten Modelle außerhalb der Sammlung behalten. Wenn das Ereignis zurückgesetzt wird, verweisen Sie auf diese Modelle, sodass Sie die Funktion zum Entfernen für SVG aufrufen können.

Verwandte Themen