我将<div>
s 添加到包装器中<div>
,并且我需要能够滚动到每次添加的最后一个。我如何在 Elm 中做到这一点?
<div class="messages" style="height: 7em; overflow: scroll">
<div>Anonymous: Hello</div>
<div>John: Hi</div>
</div>
直观地说,我似乎可以调用port
运行 JavaScript 代码的 a element.scrollTop = element.scrollHeight
:
AddChatMessage chatMessage ->
( { model | chatMessages = model.chatMessages ++ [ chatMessage ] } , scrollToBottomPort "div.messages" )
问题是在更新之前scrollToBottom
被调用。所以没什么大不了的,我将其转换为. 但是,即使现在首先更新,model
Task
model
view
还没有更新。所以我最终从底部滚动到第二个项目!
Cmd
这可能会导致我在 Elm 中很好奇的一个更普遍的问题,在由于模型更改而更新视图后如何运行?