2012-07-13 14 views
7

Come funziona l'evento di reimpostazione Backbone? Per quanto ho capitoEvento di ripristino backbone nella raccolta

  1. Rimuovere tutti i modelli della collezione
  2. Aggiungere nuovi modelli "recuperati" alla collezione
  3. Incendi ripristinate evento

Nel mio caso ogni modello disegnare qualcosa sul SVG così Dovrei chiamare la funzione di rimozione prima di rimuovere il modello dalla raccolta. Quale evento viene attivato quando il modello viene rimosso dalla raccolta?

risposta

9

Come segnalato da @Paul, non è stato generato alcun evento predefinito prima di reset. Tuttavia, è possibile fornire il proprio sovrascrivendo il metodo reset nella raccolta. Ad esempio,

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

E un esempio dell'uso

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

Vedi http://jsfiddle.net/nikoshr/8vV7Y/ per una demo

Si potrebbe anche innescare eventi in ogni modello.

3

Sei corretto che reset viene attivato dopo che i vecchi modelli sono stati rimossi e sono stati aggiunti i nuovi modelli.

Non è stato attivato alcun evento per quando un modello viene rimosso da una raccolta tramite il metodo reset.

Potrebbe essere necessario mantenere un riferimento ai vecchi modelli al di fuori della raccolta, e quindi quando viene generato l'evento di reset, si farà riferimento a tali modelli in modo da poter richiamare la funzione di rimozione per essi su SVG.

Problemi correlati