La propriété calculée observée ne se déclenche pas si elle est modifiée deux fois de suite

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

  •  12-11-2019
  •  | 
  •  

Question

J'ai un Ember.Object que je mets à jour avec une propriété comme ci-dessous, mais si je change de PrimaryDemo deux fois de suite, il ne se déclenche pas, mais si je change de PrimaryDemo, puis Rate, cela change.Je ne sais pas pourquoi et comment je peux y remédier.

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

MISE À JOUR:Donc, la première réponse et le violon m'ont fait réfléchir à l'origine du problème, et cela est dû à la modification d'une propriété sur un objet et non à l'objet lui-même.Je pense qu'Ember effectue une vérification de hachage pour voir s'il y a une différence.Dans mon cas, j'utilise déjà underscorejs, donc je change simplement la propriété, puis j'utilise _.clone(demo) avant de faire l'ensemble.Je préfère ne pas faire cela, alors j'attendrai de voir s'il existe une solution plus élégante avant de fermer ceci.

Était-ce utile?

La solution

Vous n'avez pas besoin de définir primaryDemo encore.Dans le exemple ça ne fait rien.Vous devez forcer à dire à Ember d'avertir votre observateur. Voir ce violon...

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

Autres conseils

Pouvez-vous donner plus de détails? J'ai créé un simple jsfiddle http://jsfiddle.net/jjbxb/ De votre description mais modifier la même propriété dans une ligne, comme vous le dites, fonctionne.

Êtes-vous sûr de la valeur de primaryDemo est différent dans vos 2 appels consécutifs?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top