2011-04-25 9 views

Respuesta

16

Backbone está comprobando si el valor establecido es el mismo que el valor anterior (consulte https://github.com/documentcloud/backbone/blob/master/backbone.js#L210 y encendido).

En su ejemplo, la matriz sigue siendo la misma pero el valor dentro cambió. Esto es difícil de resolver. Crear una nueva copia de la matriz parece estar sobrecargada. Yo sugeriría que llamar al evento de cambio directamente en su función de adoptar como solución:

adopt: function(newChildsName){ 
    var children_array = this.get('children'); 
    children_array.push(newChildsName); 
    this.set({children:children_array}); 
    this.trigger("change:children"); 
} 

que sugeriría para crear un tema en el repositorio de la columna vertebral github añadir tal vez una opción de "fuerza" para forzar la actualización (lo que desencadena el evento) de atributos en un modelo.

+0

Gracias julien, el método de activación funciona – p0larBoy

4

Aquí es una solución poco incómodo:

adopt: function(newChildsName){ 
    var children_array = this.get('children').splice(0); 
    children_array.push(newChildsName); 
    this.set({children:children_array}); 
} 
1

En lugar de utilizar a los niños como una matriz sencilla que se puede utilizar como una colección y escuchar el añadir, eliminar eventos de la colección.

Cuestiones relacionadas