Elm 中的表单-ui

Forms inside Elm-ui

我需要将 <form> 插入 DOM。否则,像 LastPass 这样的密码管理器将无法工作,您无法通过按键盘上的 Enter 键来提交它。我找不到比将 <form> 的全部内容从 Element msg 转换为 Html msg 并再转换回来更好的方法。这真的很低效。

insertForm : List (Element msg) -> Element msg
insertForm elements =
    html
        (Html.form []
            [ layout []
                (column [] elements)
            ]
        )

我相信一定有更好的方法。但是我在 elm-ui docs.

的任何地方都找不到它

如果您在 elm-ui 存储库中搜索 "form" 并查看代码,您会发现 Html.form 未被调用。

所以,方法就如你所展示的,就是使用Element.html.

您声称 "This is really inefficient."。这种说法是错误的。 elm-ui 必须在内部存储 Element 的表示,然后在最后将其转换为 elm/html 的 Html。直接包装存储 Html 并在最后输出它并没有什么低效的。这实际上是 elm-ui 必须要做的最少工作,因为您已经完成了生成您想要的实际 Html 的工作。