Calcula la propiedad de ser observado no se dispara si se cambia dos veces en una fila
-
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.
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?