Ich suche nach einer Lösung, um ein Objektattribut zu binden, das ein Array von Zeichenfolgen (die eine Enumeration auf dem Server darstellen) an eine Liste von Kontrollkästchen bindet. Die Bindung sollte in beide Richtungen erfolgen.
Auf dem Server haben wir eine enum-Definition, z. B. Rolle mit den Werten "ADMIN", "GUEST", "USER". Ein Benutzerobjekt kann mehrere solcher Rollen haben, daher hat das Benutzerobjekt in Ember die Form
%Vor%In der Benutzerverwaltung sollte eine Gruppe von Kontrollkästchen vorhanden sein. Ein Kontrollkästchen pro Rolle So ist es möglich, keine, alle oder mehrere auszuwählen.
Ich weiß, dass es die Ember.Checkbox
-Ansicht gibt, die dafür verwendet werden kann. Nach was ich suche, wäre eine einfache und generische Ansicht, um jede Art von enums zu behandeln, wie oben erwähnt.
Somit lauten die Fragen:
Vielen Dank im Voraus. // ph
Eine generische Methode, um eine bidirektionale Bindung zwischen einem Ember-Objekt und Checkboxen zu handhaben, kann mit Ember.js ohne Plugins implementiert werden, wenn Sie die Enums auf dem Server und dem Client manuell synchronisieren wollen (mit AJAX) oder WebSockets). Beachten Sie, dass Ember die Liste der Optionen nach einer Synchronisierung automatisch mit Checkbox aktualisieren kann.
Ich werde also von nun an annehmen, dass Sie mit Rollen als Ember-Array enum sind:
%Vor%Dann werden wir die Optionen, die dem Benutzer in einer CollectionView zur Verfügung stehen, so anzeigen (die Vorlage ist) unten angegeben).
%Vor%Die Vorlage für jede Option lautet:
%Vor% Beachten Sie, dass die Verwendung von <label>
tag dafür sorgt, dass das click
-Ereignis der Checkbox ausgelöst wird, wenn Sie auf eine beliebige Stelle auf dem Tag klicken.
Schließlich ist App.RoleCheckbox
eine Erweiterung der Klasse Ember.Checkbox
, die die Ereignisse checked
und click
behandelt, um die Rolle umzuschalten:
Ein funktionierendes Beispiel dafür ist: Ссылка (Schau auf die Konsole, um die Protokollnachrichten zu sehen)
Beachten Sie, dass dies nicht vollständig Ember-esque ist, da die View einen Teil des Jobs erledigt, der für controller
gedacht ist. Im Idealfall würde das Ereignis click
eine Funktion für RoleCheckboxController
aufrufen, die Änderungen am Objekt User
vornehmen würde.
Tags und Links ember.js