2016-11-03 3 views
1

ich eine berechnete Eigenschaft und möchten den Überblick über die seiner jüngsten Wert über die get/set-Syntax halten:EmberJS berechnete Eigenschaft Getter Endlosschleife

myProperty: Ember.computed({ 
    get: function() { 
     ? 
    }, 
    set: function (key, value) { 
     let currentValue = this.get('myProperty'); 

     this.set('oldMyProperty', currentValue); 
     return value; 
    } 
}) 

aber ich habe ehrlich gesagt keine Ahnung, was damit zu tun, der Getter. Der Aufruf von this.get('myProperty') führt zu einer Endlosschleife. Die Verwendung von nur this.myProperty reicht jedoch nicht weit genug und gibt nur die berechnete Eigenschaft zurück, nicht den Wert. Gibt es eine Möglichkeit, dass ich den Getter weglassen kann, so dass es nur auf den aktuellen Wert auflöst?

Nach dem Gespräch mit der Ember-Gemeinschaft über Slack, war ihr Vorschlag, einen alten und neuen Wert zu erhalten (vielleicht ES6 Symbols zu verwenden, um versehentliche Verweise darauf zu vermeiden). Ich bin nur neugierig, ob es einen einfacheren Weg gibt, der die get einfach auf normale Nachschlagen setzt.

Das ist, was ich Abarbeiten von:
https://guides.emberjs.com/v2.3.0/object-model/computed-properties/

Antwort

2

Die get gibt den Ausgangswert. Was sollte es sein, wenn niemand diesen Wert setzt? null? undefined? Die get wird nur einmal ausgeführt. Das von set zurückgegebene Ergebnis wird zwischengespeichert und verwendet.

Ich habe eine twiddle für diesen Fall erstellt.

Diese sample stammt aus einem Data-Grid-Addon. Um eine Zweiwege-Bindung zu vermeiden, haben wir eine solche berechnete Eigenschaft in dieses Datengitter geschrieben.

Verwandte Themen