- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用卤素灯来控制我的应用程序的菜单系统,我想知道如何“破坏”卤素灯组件。现在,我有一个函数可以在具有特定 ID 的 div 上创建子菜单组件。在应用程序的整个生命周期中,可以多次访问子菜单,因此当前每当调用 visitSubMenu
函数时都会创建该组件的多个实例。
import Halogen.Aff as HA
import Halogen.VDom.Driver (runUI)
visitSubMenu = do
elem <- HA.selectElement "#submenu"
case elem of
(Just element) -> do
liftEff $ HA.runHalogenAff do
io <- runUI subMenuComponent unit element
-- other code using component io...
理想情况下,我希望当用户完成他们在子菜单中的工作时删除子菜单组件(即删除注入(inject)#submenu 的 HTML,进行其他清理)。这种事情可能吗?我意识到我只能在应用程序启动时设置一次组件,并在应用程序的整个生命周期中保持它的事件状态,但对我来说,如果只在需要时设置它似乎更好。
我怀疑这是正确的做法,但我最初的想法是我可以创建一个生命周期组件,当我想销毁它时,我可以发送一个 Finalize
查询,然后手动删除来自 DOM 的父元素。
最佳答案
最后,我找到的唯一解决方案是向组件发送“清理”查询,然后删除卤素组件的根 DOM 元素。
外国金融机构
exports.removeElementById = function(id) {
return function() {
var e = document.getElementById(id);
if (e) e.remove();
}
}
卤素组件模块
foreign import removeElementById :: String -> Eff (dom :: DOM | e) Unit
removeSelf :: forall e. Aff (dom :: DOM | e) Unit
removeSelf = liftEff $ removeElementById componentId
componentId :: String
componentId = "unique-id-for-component"
render :: State -> H.ComponentHTML Query
render state = HH.div [HP.id_ componentId] []
这样我就可以在使用完组件后调用 removeSelf
。
关于lifecycle - "destroy"purescript-halogen component 使用完毕后,最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442328/
我正在使用 purescript-halogen,当捕获到子组件的消息时,我想滚动到 div 的底部。 但是,在 Halogen 中似乎不存在滚动 Action 控制。 那么,我该如何 Scroll
我想使用 Purescript 的 Halogen 编写前端的特定组件。 例如,我想使用卤素创建一个注册表单。它看起来像下面这样: module RegistrationForm where impo
我正在尝试使用 purescript-halogen与 websockets 结合使用,但经过几次尝试后,我无法让它们一起工作。 我看过this question on Thermite and we
我正在使用 purescript-halogen 构建类似电子表格的表格(类似于 Handsontable )。如果您双击一个单元格,一个 html 输入元素将呈现为相应表格单元格的子元素(并且不会为
我正在使用卤素灯来控制我的应用程序的菜单系统,我想知道如何“破坏”卤素灯组件。现在,我有一个函数可以在具有特定 ID 的 div 上创建子菜单组件。在应用程序的整个生命周期中,可以多次访问子菜单,因此
如何将特定的 purescript-halogen 组件渲染到 标签中? 以下为 Halogen 1.0.0 编写的示例将样式表和段落呈现到 HTML 正文中: module Main where i
我是一名优秀的程序员,十分优秀!