Ich füge <div>
s zu einem Wrapper <div>
und ich muss in der Lage sein, bis zum letzten jedes Mal hinzugefügt scrollen. Wie mache ich das in Elm?Wie automatisches Scrollen bis zum Ende eines Div in Elm
<div class="messages" style="height: 7em; overflow: scroll">
<div>Anonymous: Hello</div>
<div>John: Hi</div>
</div>
Intuitiv scheint es, wie ich ein port
nennen könnte, die den JavaScript-Code läuft element.scrollTop = element.scrollHeight
:
AddChatMessage chatMessage ->
({ model | chatMessages = model.chatMessages ++ [ chatMessage ] } , scrollToBottomPort "div.messages")
Das Problem wird scrollToBottom
aufgerufen wird, bevor die model
aktualisiert wird. Also keine große Sache, ich konvertiere das in eine Task
. Aber auch wenn die model
jetzt zuerst aktualisiert wird, wird die view
noch nicht aktualisiert. Also scrolle ich zum zweiten Punkt von unten!
Dies führt vielleicht zu einer allgemeineren Frage, auf die ich mich in Elm freue, wie läuft ein Cmd
, nachdem die Ansicht aufgrund einer Änderung im Modell aktualisiert wurde?
Sie können sich die offizielle TodoMVC Ulme App ansehen. Ich denke, dass es genau das tut. (Auf Handy jetzt, sonst hätte Link geteilt). – wintvelt
@wintvelt, Hier ist die TodoMVC Elm App: https://github.com/evancz/elm-todomvc/blob/master/Todo.elm. Ich habe dort nichts über Scrollen gesehen, nur einen 'Dom.focus' Anruf. 'index.html' und die CSS-Datei lieferte auch keinen Hinweis auf automatisches Scrollen. –
Sie haben Recht. Es ist nicht in der Todomvc App. Mein Fehler. Wird eine Antwort unten hinzufügen. – wintvelt