Ich möchte eine Schaltfläche erstellen, die, wenn sie gedrückt wird, dem Formular eine neue Eingabe (oder Textbereich) hinzufügt.
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.
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 .
Tags und Links functional-programming frp elm