gpt4 book ai didi

elm - 在 Elm 中更新 View 后调用端口

转载 作者:行者123 更新时间:2023-12-05 00:51:20 25 4
gpt4 key购买 nike

有没有一种直接的方法来获得 Cmd View 更新后执行?特别是,我试图在 textarea 中重新定位光标。在按下特定键(如回车键)时。在我的 update我有的功能:

case keyboardEvent.key of
"Enter" ->
( modelAfterEnterPressed model keyboardEvent.selectionStart, setCursor model.cursor )
"Tab" ->
....

我的 setCursor端口被调用,相应的 JavaScript 代码调用 textareasetSelectionRange功能正常。然后 Elm 调用我的 view更新 textarea 的函数的内容。不幸的是,这抹去了我的光标位置。

我需要 textarea调用前要更新的内容 textarea.setSelectionRange()在我的 JavaScript 端口中。不诉诸于 setTimeout 的任何方法都可以做到这一点这可能并不总是有效并且会在超时内导致闪烁?

最佳答案

执行此操作的标准方法是触发在下一个滴答中返回的命令 - 例如Date.now - 然后从该消息触发端口命令。这保证了 View 函数将运行并且您的文本区域存在。

根据我的经验,另一种似乎也有效的替代方法是替换 setTimeout (具有任意间隔)带有 requestAnimationFrame:

elm.ports.selectText.subscribe( () => {
requestAnimationFrame( () => {
var textarea = document.querySelector(...);
textarea.setSelectionRange();
});
});

这将在 view 之后触发也被渲染了。

关于elm - 在 Elm 中更新 View 后调用端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44442259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com