Gibt es eine einfache Möglichkeit, eine Cmd
auszuführen, nachdem die Ansicht aktualisiert wurde? Insbesondere versuche ich, den Cursor in einer textarea
um bestimmte Tasten (wie die Eingabetaste) gedrückt zu werden. In meiner update
Funktion habe ich:Aufruf eines Ports, nachdem die Ansicht in Elm aktualisiert wurde
case keyboardEvent.key of
"Enter" ->
(modelAfterEnterPressed model keyboardEvent.selectionStart, setCursor model.cursor)
"Tab" ->
....
Mein setCursor
Port genannt wird und die entsprechenden Aufrufe von JavaScript-Code der textarea
‚s setSelectionRange
richtig funktionieren. Und dann Elm ruft meine view
Funktion, die den Inhalt textarea
aktualisiert. Leider löscht das meine Cursorposition.
ich für die textarea
‚s Inhalt muß aktualisiert werden, bevortextarea.setSelectionRange()
in meinem JavaScript Hafen anlaufen. Eine Möglichkeit, dies zu tun, ohne auf setTimeout
zurückgreifen, die möglicherweise nicht immer funktioniert und kann Blitze innerhalb der Zeitüberschreitung verursachen?
Elm hat tatsächlich eine integrierte Subskriptionsfunktion für 'requestAnimationFrame()': http://package.elm-lang.org/packages/elm-lang/animation-frame/latest/AnimationFrame. Meine Sorge war, dass typisierte Schlüssel zwischen dem ersten 'KeyboardEvent' und dem nächsten Animationsrahmen registriert/verarbeitet werden könnten. Das würde alles wegwerfen. –