La proprietà calcolata osservata non si accende se cambiata due volte di fila

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

  •  12-11-2019
  •  | 
  •  

Domanda

Ho un ember.object che sto aggiornando con una proprietà come sotto, ma se cambio primarioDemo due volte di seguito, non spara, ancora se cambio PrimaryDemo, quindi Vota, cambia.Sono perplesso sul perché questo è e come posso aggiustarlo.

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

Aggiornamento : Quindi la prima risposta e il violino mi hanno fatto pensare su cosa fosse il problema, ed è dovuto cambiando una proprietà su un oggetto e non l'oggetto stesso.Penso che Ember faccia un assegno hash per vedere se c'è una differenza.Nel mio caso sto già usando underscorejs, quindi modifico la proprietà, quindi usi _..Clone (demo) prima di fare il set.Preferirei non farlo, quindi aspetterò di vedere se c'è una soluzione più elegante prima di chiudere questo.

È stato utile?

Soluzione

Non è necessario impostare nuovamente primaryDemo.In Esempio che non fa nulla.È necessario forzare raccontando Ember di avvisare il tuo osservatore. Vedi questo violino ...

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

Altri suggerimenti

Puoi dare maggiori dettagli?Ho creato un semplice jsfiddle http://jsfiddle.net/jjbxb/ dalla tua descrizione ma cambia la stessa proprietà inUna riga, come dici tu, funziona.

Sei sicuro che il valore di primaryDemo sia diverso nelle tue 2 chiamate consecutive?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top