2012-07-13 10 views
7

¿Cómo funciona el evento de restablecimiento de red troncal? Por lo que yo entiendoEvento de restablecimiento de red troncal en la colección

  1. Quitar todos los modelos de la colección
  2. Añadir nueva "inverosímiles" modelos a la colección restablecen
  3. desencadena el evento

En mi caso cada modelo dibujar algo en SVG por lo Debo llamar a quitar la función antes de eliminar el modelo de la colección. ¿Qué evento se desencadena cuando el modelo se elimina de la colección?

Respuesta

9

Como señaló @Paul, no hay un evento predefinido disparado antes de un reset. Sin embargo, puede proporcionar el suyo anulando el método reset en su colección. Por ejemplo,

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

Y un ejemplos de 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}); 

Ver http://jsfiddle.net/nikoshr/8vV7Y/ para una demostración

También podría desencadenar eventos en cada modelo.

3

Tiene razón en que reset se activa después de que se quitaron los modelos antiguos y se agregaron los nuevos modelos.

No se activa un evento cuando se elimina un modelo de una colección mediante el método reset.

Es posible que deba mantener una referencia a los modelos antiguos fuera de la colección, y luego cuando se active el evento de reinicio, tendrá referencia a esos modelos para que pueda llamar a la función de eliminación para ellos en SVG.

Cuestiones relacionadas