2016-08-03 23 views
0

Ich habe eine Steuerung ApplicationController mit controllerInt und controllerString Eigenschaften.Merkwürdiges Verhalten in ember 1.13. *

Und ich habe eine Komponente RedSquareComponent mit componentInt und componentString Eigenschaften.

Ich binde controllerInt und controllerString zu componentInt und componentString über hbs-Vorlage, componentString=controllerString="VALUE FROM CONTROLLER".

In RedSquareComponent Ich habe auch .on('init') Methode, die "SET ON INIT" Wert componentString eingestellt.

Ich habe eine Aktion zur Komponente hinzugefügt, um auf ein Objekt (rotes Quadrat) zu klicken und einen Wert (z. B. 1) auf componentInt zu setzen.

Aber wenn diese Aktion funktioniert - componentString ändert sich auch (ich weiß nicht warum), und werden gleich "VALUE FROM CONTROLLER".

Ist es ein wirklich erwartetes Verhalten?

Der gleiche Code funktioniert gut auf Ember 12.4, aber ich habe es auf mehreren 13. * Versionen überprüft - es funktioniert nicht.

https://jsfiddle.net/AlexeyBedonik/a23ev98w/3/

Antwort

0

In Ihrem Fall, wenn Sie nur .on('init') Teil .on('didInsertElement') ändern Sie es, Ihr Problem zu beheben. (Das bedeutet, dass sie sowohl Controller aktualisiert wird und Komponente componentString Eigenschaft auf ‚ON INIT‘.)
Aber Sie sollten die Werte für ein übergeordnetes Element, das bereits gerendert wurde, nicht ändern. Sie erhalten daher eine Verwarnungswarnung.

Um weitere Informationen zu diesem Problem zu erhalten/Fehler follow this discussion.

Es ist gut, die folgenden Konzepte zu verstehen.

1) Passing Eigenschaften Komponente standardmäßig ist es two-way data binding
2) So aktualisieren Sie Daten, um die Daten nach unten Aktionen immer folgen Up priniciple (DDAU)