Ich möchte eine einzelne Route meiner EmberJS-App als mehrstufige Form verwenden. Dies ist die einzige Zeit, die ich möchte, dass meine URL unverändert bleibt, also ist location: 'none'
keine Option (soweit ich das beurteilen kann). Ich habe Controller auf anderen Routen, die eng in die URL integriert sind, wie sie sein sollten.
Aber unter dieser einzigen, unveränderten URL möchte ich Folgendes erreichen:
.save()
-ed beim Senden sind. Die Art, wie Lenker funktioniert, wirft mich wirklich auf eine Schleife.
Ich habe die Dokumentation überflutet, kann aber kein Beispiel finden. Ich habe das Gefühl, dass es ein Fall ist, in dem ich einfach nicht weiß, was ich noch nicht weiß. Wenn mir also jemand in die richtige Richtung zeigen könnte, wäre das hoffentlich alles, was ich brauche.
Sie können dies mit einigen Aktionen und einigen Werten erreichen, die den Zustand des Formulars definieren.
Ihr Controller könnte einige Eigenschaften wie folgt haben:
%Vor%Wie Sie von Schritt zu Schritt übergehen möchten, ist eine Sache des Use Cases, aber Sie würden die Schritteigenschaften wie folgt ändern.
%Vor%In Ihrer Vorlage können Sie Ihren Inhalt einfach mit dem if-Helfer kapseln.
%Vor%Also der Grund für das Erstellen von 3-stufigen Eigenschaften hier statt
%Vor%Aus Gründen des Lenkerverhaltens können Sie derzeit einen aktuellen Schritt nicht zuordnen.
%Vor%Nun, es sei denn, Sie erstellen einen Lenkerblock-Helfer.
Ich habe mit MartinElvars exzellenter Antwort angefangen, aber ich habe mich an einem anderen Ort aufgehalten, seit ich jedes Formular validieren musste Seite des Assistenten. Wenn Sie jede Seite des Assistenten zu einer eigenen Komponente machen, können Sie die Überprüfung jeder Seite leicht einschränken.
Beginnen Sie mit einer Liste von Schritten auf Ihrem Controller:
%Vor%Stellen Sie dann sicher, dass der Benutzer bei jedem Zugriff auf den Controller zum ersten Schritt springt:
%Vor%Jetzt können Sie zurück zum Controller gehen und weitere generische Schritte next / back / cancel hinzufügen:
%Vor%Definieren Sie nun eine Komponente für die Seite Ihres Assistenten. Der Trick besteht hier darin, jede Komponente mit demselben Namen wie jeden im Controller aufgelisteten Schritt zu definieren. (Dadurch können wir später einen Komponentenhelfer verwenden.) Mit diesem Teil können Sie die Formularprüfung auf jeder Seite des Assistenten durchführen. Zum Beispiel mit ember-cli-simple-validation :
%Vor%Und schließlich wird die Vorlage der Route einfach:
%Vor%Jede Komponente erhält einen Verweis auf das Modell des Controllers und fügt bei Schritt die erforderlichen Daten hinzu. Dieser Ansatz hat sich für mich als ziemlich flexibel erwiesen: Er ermöglicht es Ihnen, in jeder Phase des Assistenten (z. B. Interaktion mit einer Hardware und Warten darauf, dass er reagiert) die verrückten Dinge zu tun, die notwendig sind.
Tags und Links ember.js