Ich habe gerade mit Ember.js meine Füße nass gemacht, und ich habe etwas getroffen, das ich sicher nicht verstehe.
Ich habe einen ausgewählten Objekt-Controller. Es hat Inhalt, was ein Ember.Object ist, welches das aktuell ausgewählte Modell ist. Das Modell hat eine Eigenschaft (isDirty), und grundsätzlich möchte ich, dass meine Schaltfläche zum Speichern auf meinem Formular nur aktiviert wird, wenn das Objekt schmutzig ist und gespeichert werden muss.
Ich habe es geschafft, das Formular gut zu verbinden, aber die IsEnabledBinding-Eigenschaft auf der Schaltfläche "Speichern" macht entweder gar nichts oder ich schließe die Bindung nicht richtig an.
Ich habe ein Spiel vorbereitet, das meine grundlegende Einrichtung demonstriert.
Wie bekomme ich die Schaltfläche nur aktiviert, wenn isDirty wahr ist? Die Bindungen sollten auch funktionieren, wenn sich die content -Eigenschaft auf dem ausgewählten Objektcontroller ändert.
Das Problem ist, dass es keine isEnabled
Eigenschaft auf Ember.Button
gibt. Sie müssen an die disabled
-Eigenschaft binden.
Eine Möglichkeit besteht darin, eine benutzerdefinierte Ember.Button
zu erstellen, die dies für Sie erledigt, siehe Ссылка .
Lenker :
%Vor%JavaScript :
%Vor% Das verwendete Ember.Binding.not
ist nur eine Abkürzung für das Schreiben einer eigenen berechneten Eigenschaft, die wie folgt aussehen würde:
Ich habe Ihren Code auch etwas überarbeitet:
Sie haben create
und extend
gemischt: verwenden Sie create
für Instanzen und extend
für Klassen. Es gibt einen guten Blog-Post über dieses
Es ist eine Art Konvention, lowCase für Instanzen und UpperCase für Klassen zu verwenden, also sollte es App.controller
statt App.Controller
Ich habe einen Weg gefunden, dies zu tun, ohne den jetzt veralteten Ember.Button zu verwenden.
In der Lenkervorlage:
%Vor%In der Ansicht:
%Vor%(Mit der Version von Ember habe ich, Ember.Binding.not nicht existiert. Vielleicht muss ich aktualisieren, aber die Dokumente zeigen es auch nicht so vielleicht wurde es tatsächlich entfernt.)
Tags und Links javascript ember.js