bidirektionale Bindung zwischen Objektattribut-Array (Aufzählung auf Server) und Ember-Checkbox-Gruppe

8

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:

  • hat jemand eine schöne Lösung dafür?
  • kennt jemand ein Opensource-Projekt, das Ember solche Erweiterungen anbietet?

Vielen Dank im Voraus. // ph

    
Patrick Hammer 02.02.2013, 18:26
quelle

1 Antwort

8

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:

%Vor%

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.

    
musically_ut 02.02.2013, 21:15
quelle

Tags und Links