2016-05-15 14 views
0

Bei Ember.js Guide, gibt es ein Beispiel wie folgt aus:Warum ist das Zuweisen einer Eigenschaft bei init und didUpdateAttrs anders?

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    init() { 
    this._super(...arguments); 
    this.errors = []; 
    }, 

    didUpdateAttrs() { 
    this._super(...arguments); 
    this.set('errors', []); 
    }, 

    ... 
}); 

Warum errors Eigenschaft zuweisen an init verschieden ist und didUpdateAttrs? Was sind ihre Unterschiede?

AKTUALISIERT nach @locks beantworten:

Wenn observability eingestellt? Nach der Init? Die Werte der übergeordneten Komponente wurden jedoch den Eigenschaften der untergeordneten Komponente vor der Initialisierung zugewiesen.

Antwort

2

Dies muss meist mit Beobachtbarkeit sein. Auf init, Beobachtbarkeit wurde nicht eingerichtet, so this.errors = [] und this.set('errors', []) sind funktionell ähnlich.

Wenn Sie innerhalb des didUpdateAttrs Lifecycle-Hook this.errors = [] tun würden, würden die zugehörigen berechneten Eigenschaften und Vorlagen nicht aktualisiert. Dies liegt daran, dass Sie derzeit get/set benötigen, um KVO-konform zu sein.

+0

Wann ist die Beobachtbarkeit festgelegt? Nach der Init? Die Werte der übergeordneten Komponente wurden den Eigenschaften der untergeordneten Komponente vor der Initialisierung zugewiesen. – ykaragol

+0

Yup, nach init. Soweit ich weiß, ist das Einstellen der Beobachtbarkeit Teil der Init-Prozedur von Ember.Object – locks