Wie erstellen Sie dynamisch Eingaben in Elm?

8

Ich möchte eine Schaltfläche erstellen, die, wenn sie gedrückt wird, dem Formular eine neue Eingabe (oder Textbereich) hinzufügt.

    
Robin Green 01.12.2012, 15:51
quelle

2 Antworten

9

Wenn Sie jedes Mal, wenn Sie auf die Schaltfläche klicken, ein Textfeld hinzufügen möchten, bedeutet dies, dass die Anzahl der angezeigten Textfelder der Anzahl der Klicks auf die Schaltfläche entsprechen soll. Wir können ein Signal erzeugen, das uns sagt, wie oft die Schaltfläche angeklickt wurde, indem%%%% auf dem% code% -Signal¹ der Schaltfläche verwendet wurde.

Wenn wir eine Liste von Eingaben haben, können wir countIf id verwenden, um sie unter (oder neben) einander anzuzeigen. Es ist ziemlich einfach, eine Funktion zu schreiben, die eine Zahl clicked annimmt und eine Liste erzeugt, die eine Schaltfläche und flow Textfelder enthält.

Also können wir jetzt n verwenden, um diese Funktion mit unserem Signal zu verknüpfen, das die Anzahl der Schaltflächen zählt, kombiniert mit der Funktion n , und voilà, wir haben eine Schaltfläche, die Eingaben dynamisch erzeugt / p> %Vor%

¹ Wenn Sie nur lift verwenden, wird gezählt, wie oft sich das Signal ändert. Da jeder Klick bewirkt, dass der Wert des Signals auf "wahr" und dann wieder auf "falsch" geändert wird, würden 2 Änderungen pro Klick gezählt. Mit flow zählen wir nur die Anzahl der Echos und damit die Anzahl der Klicks.

    
sepp2k 28.12.2012 21:03
quelle
2

Ab Elm 0,8 kann dies tatsächlich getan werden. Siehe die Release-Ankündigung , den Abschnitt Input Groups der Online-Referenz und code Beispiel .

    
thSoft 17.06.2013 10:43
quelle

Tags und Links