Binding aktiviert Zustand der Schaltfläche in Ember.js

8

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.

    
KevinBrownTech 26.03.2012, 06:40
quelle

2 Antworten

10

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:

%Vor%

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

  • sein
pangratz 26.03.2012, 07:30
quelle
14

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.)

    
webjprgm 05.12.2012 21:28
quelle

Tags und Links