1

我正在开发一个生成可视化的小型 Purescript 应用程序。然而,我的架构有点非传统,而且我遇到了一些问题。这就是我想要的:

  1. 启动pulp psci -- --port 8080并连接浏览器
  2. 调用一个go接受可视化定义并将其与一些控件一起呈现的函数
  3. 查看结果。回到 REPL 并可能创建一些新定义。
  4. 转到第 2 步并使用 绘制新的可视化go

到目前为止,这种方法适用于我,但我的问题是重复调用go不会替换 DOM 的内容,而是添加到它们中。这意味着在几次调用之后,我最终获得了所有控件和所有内容的许多副本。

我意识到这有点 hack,但是我能想到的提供这种交互式界面的唯一其他方法是实现一个编辑器/解析器,而且工作量太大有没有办法避免这种情况?

这是我对 的定义go,我认为需要更改:

go :: Vis -> Eff (HA.HalogenEffects ()) Unit
go vis = HA.runHalogenAff do
  body <- HA.awaitBody
  runUI checks vis body
4

1 回答 1

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
于 2017-12-22T01:45:00.650 回答