我正在尝试使用threepenny来了解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 很陌生,可能错过了一些东西。