基于行为的动态元素在三便器中的表现

ips*_*sec 5 haskell frp threepenny-gui

简单来说,我正在寻找一种显示方式Behaviour (UI Element).

我的实际用例是显示一个可以过滤的表.所以我有一个函数tableElement :: String -> UI Element(String参数是过滤条件)和一个输入字段filterElement :: Element,它代表过滤器.对我来说,最自然的方式就是这样:

bFilter <- stepper "" (valueChange filterElement)
displaySomehow (fmap tableElement bFilter)
Run Code Online (Sandbox Code Playgroud)

这也是在Elm中完成的方式.

到目前为止sink children,我发现的最接近的是使用,但这只适用于[Element]而不适用[UI Element].另外,我必须使用虚拟元素作为父元素或与其余子元素混在一起.

用threepenny-gui实现类似这样的东西最好的方法是什么?

Hei*_*mus 2

(作者在此)

请注意,UI Element代表一个操作,执行时可能会创建一个新的 Element. 您必须执行该操作才能执行后者。不幸的是,目前还没有办法在 FRP 风格中完全做到这一点,每当过滤器发生变化时,您将不得不求助于onChanges组合器重新创建表。在那里,您可以使用set children.

例子:

onChanges bFilter $ \s -> do
    el <- tableElement s
    myTable # sink children [el]
Run Code Online (Sandbox Code Playgroud)

Bartab.hs和CRUD.hs示例可能与您的情况相关。