threepenny-gui 中基于行为的动态元素
Dynamic Elements based on Behaviour in threepenny-gui
简单来说,我正在寻找一种方法来显示 Behaviour (UI Element)
。
我的实际用例是显示一个 table,它可以被过滤。所以我有一个函数 tableElement :: String -> UI Element
(String
参数是过滤条件)和一个输入字段 filterElement :: Element
,代表过滤器。对我来说,将这些结合起来最自然的方式是这样的:
bFilter <- stepper "" (valueChange filterElement)
displaySomehow (fmap tableElement bFilter)
这也是 Elm 中的做法。
到目前为止,我发现最接近的是使用 sink children
,但它只适用于 [Element]
,而不适用于 [UI Element]
。此外,我必须使用虚拟元素作为父元素或 fiddle 与其余子元素一起使用。
用 threepenny-gui 实现类似功能的最佳方法是什么?
您可以使用 currentValue
从那里(希望)获得 UI
中的 UI Element
并且可以获得要包含在 HTML 中的元素。
(作者在此)
请注意,UI Element
表示一个 action,执行时可能会创建一个 new Element
。您将必须执行操作才能完成后者。不幸的是,目前没有办法在 FRP 样式中完全做到这一点,每当过滤器发生变化时,您将不得不求助于 onChanges
组合器来重新创建 table 。在那里,您可以使用 set children
.
示例:
onChanges bFilter $ \s -> do
el <- tableElement s
myTable # sink children [el]
简单来说,我正在寻找一种方法来显示 Behaviour (UI Element)
。
我的实际用例是显示一个 table,它可以被过滤。所以我有一个函数 tableElement :: String -> UI Element
(String
参数是过滤条件)和一个输入字段 filterElement :: Element
,代表过滤器。对我来说,将这些结合起来最自然的方式是这样的:
bFilter <- stepper "" (valueChange filterElement)
displaySomehow (fmap tableElement bFilter)
这也是 Elm 中的做法。
到目前为止,我发现最接近的是使用 sink children
,但它只适用于 [Element]
,而不适用于 [UI Element]
。此外,我必须使用虚拟元素作为父元素或 fiddle 与其余子元素一起使用。
用 threepenny-gui 实现类似功能的最佳方法是什么?
您可以使用 currentValue
从那里(希望)获得 UI
中的 UI Element
并且可以获得要包含在 HTML 中的元素。
(作者在此)
请注意,UI Element
表示一个 action,执行时可能会创建一个 new Element
。您将必须执行操作才能完成后者。不幸的是,目前没有办法在 FRP 样式中完全做到这一点,每当过滤器发生变化时,您将不得不求助于 onChanges
组合器来重新创建 table 。在那里,您可以使用 set children
.
示例:
onChanges bFilter $ \s -> do
el <- tableElement s
myTable # sink children [el]