将文本字段和按钮单击转到“UI(事件字符串)”

时间:2014-01-12 00:02:02

标签: haskell frp threepenny-gui

我正在尝试用三便士来了解FRP。

我想生成包含用户输入的事件,并在每次单击按钮时触发。您可以在github上看到代码。

我尝试使用函数

submitEvents :: Element -> Element -> UI (Event String)
submitEvents button input = do val <- get value input
                               return $ val <$ (UI.click button)

它稍后会在do块中使用。

nameE <- submitEvents loginButton userNameInput
currName <- stepper "Ash" nameE
element currNameElem # sink text currName

但它最终只是在第一次点击后成为空字符串。在此之前它按预期包含值“Ash”。我认为发生的是在生成事件流时提取输入的值,而不是每次点击一次。我环顾了文档,没有看到m a -> Event () -> m (Event a)的任何内容,但我对frp很新,可能错过了什么。

1 个答案:

答案 0 :(得分:1)

哦,我明白了。我正在构建UI.valueChange所需的内容。

submitEvents :: Element -> Element -> UI (Event String)
submitEvents button input = do currVal <- stepper "" $ UI.valueChange input
                               return $ currVal <@ (UI.click button)

效果很好。我不确定是否有一种更有效的方式只能在按下按钮时查看它。如果有人找到更好的答案,我会打开这个问题。