Calcula la propiedad de ser observado no se dispara si se cambia dos veces en una fila

StackOverflow https://stackoverflow.com/questions/9445676

  •  12-11-2019
  •  | 
  •  

Pregunta

Tengo una Brasa.Objeto que me estoy actualizando con una propiedad, como el de abajo, pero si puedo cambiar primaryDemo dos veces en una fila, no de fuego, sin embargo, si cambio de primaryDemo, entonces la Tasa, que hace cambiar.Estoy perplejo en cuanto a por qué sucede esto y cómo puedo solucionarlo.

dependantChanged: function() {
    console.log('Firing change');
    this.get('_update')(this);
}.observes('primaryDemo', 'Rate', 'Totals'),

ACTUALIZACIÓN:Así que la primera respuesta y el violín me hizo pensar en cuanto a cuál era el problema, y es debido a los cambios de una propiedad de un objeto y no el objeto en sí.Creo que ember hace un hash de verificación para ver si hay una diferencia.En mi caso ya estoy utilizando underscorejs, por lo que acabo de cambiar la propiedad, a continuación, utilice _.clon(demo) antes de hacer el conjunto.Yo prefiero no hacer eso, así que esperará para ver si hay una solución más elegante antes de cerrar este.

¿Fue útil?

Solución

Usted no necesita establecer primaryDemo de nuevo.En el ejemplo que no hace nada.Usted necesita a fuerza de decirle a la Brasa para notificar a su observador. Ver este violín...

var demo = { Imps: 1, Demo: { Id: 2 } }

var obj = Ember.Object.create({
    dependantChanged: function() {
        console.log('Firing change');
    }.observes('primaryDemo', 'Rate', 'Totals'),
});

obj.set('primaryDemo', demo);
demo.Imps = 2;
obj.set('primaryDemo', demo);

// Notify observers on obj#primaryDemo
Ember.notifyObservers(obj, 'primaryDemo');

Otros consejos

¿Puedes dar más detalles?Creé un simple jsfiddle http://jsfiddle.net/jjbxb/ de su descripción pero cambiando la misma propiedad enUna fila, como dices, funciona.

¿Está seguro de que el valor del primaryDemo es diferente en sus 2 llamadas consecutivas?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top