我正在开发一个生成可视化的小型Purescript应用程序。我的架构有点不传统,但我遇到了一些问题。这就是我想要的:
pulp psci -- --port 8080
并使用浏览器连接go
,该函数接受可视化的定义并将其与一些控件一起呈现go
绘制新的可视化效果。这种方法与我到目前为止的工作有关,但我的问题是对go
的重复调用不会替换DOM的内容,而是添加到它们中。这意味着在几次调用后,我最终得到了所有控件和所有内容的许多副本。
我意识到这有点像黑客,但我能想到提供这种交互式界面的另一种方法是实现一个编辑器/解析器而且工作量太大有没有办法避免此?
这是我对go
的定义,我想这需要改变:
go :: Vis -> Eff (HA.HalogenEffects ()) Unit
go vis = HA.runHalogenAff do
body <- HA.awaitBody
runUI checks vis body
答案 0 :(得分:0)
经过批次的实验后,我发现至少有一个看似合理的解决方法是明确删除旧的子节点。我真的不知道后台发生了什么(我运行了一堆无意义的进程吗?)但这符合我的目的:
go :: VVis -> Eff (HA.HalogenEffects ()) Unit
go vis = HA.runHalogenAff do
body <- HA.awaitBody
let nb = htmlElementToNode body
_ <- H.liftEff $ whileJust
(firstChild (htmlElementToNode body))
(\n -> removeChild n (htmlElementToNode body))
runUI checks vis body