Frage

Ich habe Probleme mit der Bindung von Klassennamen.Hier ist der jsfiddle -Code dafür.Protokollieren, wie oft die Bindung aufgerufen wird.Es wird niemals aufgerufen, wenn die Eigenschaft geändert wird.

War es hilfreich?

Lösung

Hier scheinen Sie einige Probleme zu haben. Wenn Sie möchten, dass Eigenschaften neu berechnet werden, wenn sich der Inhalt eines Arrays ändert, können Sie sich nicht nur auf die Array-Eigenschaft selbst verlassen. Eine Änderung wird nur ausgelöst, wenn sie auf ein anderes Array festgelegt ist. Wenn Sie stattdessen auf myArray.@each angewiesen sind, wird Ihre Eigenschaft neu berechnet, wenn sich auch der Inhalt ändert.

Als Nächstes wird Ihre Vorlage mit dem Bereich nicht gerendert, da Sie eine leere Ansichtsvorlage in der Deklaration Ihrer Lenkeransicht angeben. Ändern Sie Ihr "HTML" in:

{{view App.contact}}

und Ihre Spanne wird angezeigt.

Schließlich scheint es hier nicht ausreichend zu sein, Ember.run.sync() auszuführen. Der Grund dafür ist mir nicht so klar, aber ... berechnete Eigenschaften werden nur beim Lesen aktualisiert (im Vergleich zu Beobachtern, die sofort aktualisiert werden). Ich würde die Hypothese aufstellen, dass Ihre berechnete Eigenschaft nur einmal für alle Ihre Änderungen an "Untergebenen" neu berechnet wird, da Ihre berechnete Eigenschaft nur von der Ansicht verwendet wird und die Ansicht möglicherweise nur bei einem nachfolgenden Durchlauf durch die JS-Ereignisschleife aktualisiert wird. Ändern Sie Ihren Code, um Zeitüberschreitungen zu verwenden, und es wird gut funktionieren.

Hier ist eine jsfiddle mit all meinen vorgeschlagenen Änderungen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top