gpt4 book ai didi

haskell - reflex-dom 中处理模态对话框的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-03 14:06:48 25 4
gpt4 key购买 nike

我刚开始使用 reflex-dom库,我无法弄清楚使用对话框的正确和方便的方法。

显示对话框通常意味着在 <body> 的末尾添加一些元素并在用户单击某个按钮、背景或按下时将其删除,例如逃脱。然而,从一些嵌套的小部件执行此操作意味着以某种方式将事件(“显示对话框”)冒泡到顶部,这可能非常笨拙。有没有其他方法可以很好地做到这一点?我刚看了markup.rocks这似乎使用了一些 JS/jQuery hacks。

我可以决定不使用模态对话框(毕竟这可能不是一个糟糕的选择),但对于某些事情我可能真的需要它。

最佳答案

最终我发现它很容易:

首先,获取body元素:

getBody = do
root <- askDocument
Just nodelist <- getElementsByTagName root ("body" :: String)
Just body <- nodelist `item` 0
return body

然后,假设 triggerEvent触发打开对话框和 visibleDynamic t Bool保存当前状态,我们可以创建一个背景并将其移动到 body 的后面:
backdropAttr <- forDyn visible (\vis -> if vis then ("class" =: "modal-backdrop fade in")
else ("style" =: "display:none"))
(backdrop, _) <- elDynAttr' "div" backdropAttr blank
body <- getBody
let moveBackdrop = (const $ (appendChild body (Just $ _el_element backdrop))) `fmap` trigger
performEvent_ $ void `fmap` moveBackdrop

关于haskell - reflex-dom 中处理模态对话框的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33711392/

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