从纸浆psci编辑和运行卤素应用

问题描述 投票:1回答:1

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

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

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

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

这是我对go的定义,我想这需要改变:

go :: Vis -> Eff (HA.HalogenEffects ()) Unit
go vis = HA.runHalogenAff do
  body <- HA.awaitBody
  runUI checks vis body
purescript halogen
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
© www.soinside.com 2019 - 2024. All rights reserved.