2011-07-01 26 views
6

如何在使用反應型香蕉時獲得ui元素的內容? event0返回類型爲Event()的事件,它具有單位類型而不是控件的類型。 event1需要類型Event w (a -> IO())的事件,但命令的類型爲Event w (IO())。 mapAccumE和mapAccumB以純函數作爲參數,因此get text foo不能與它們一起使用。用戶界面輸入與reactive-banana-wx

回答

4

基本上,你想使用函數而不是數據。如果您在考慮「如何創建一個包含當前文本的行爲」,則不會。相反,您可以編寫將當前文本作爲參數的函數,並在需要時傳遞它。假設你想在按下按鈕時打印文本框的內容。然後,你會做這樣的事情:

eButton :: NetworkDescription (Event()) 
eButton = event0 button command 

network = do 
    pressButton <- eButton 
    reactimate $ (\() -> get text foo >>= print) <$> pressButton 

如果你需要得到輸入到行爲,你同樣可以使用帶有Behavior (String -> a)類型(或任何類型的需要)的功能,然後只需通過在弦撥打電話reactimate

4

(的reactive-banana作者說,很抱歉這麼晚纔回復,在這裏被問的問題的可能性,甚至沒有過我的腦海。:-))

今天我發現我忽略了非常重要的特徵,從庫:獲取UI元素的內容爲Behavior。尷尬! :-D

John描述了目前的解決方法,但下一個版本的reactive-banana將包含缺少的功能。

編輯:我已經發布了無功香蕉version 0.4現在包括在一個功能的形式的功能

fromPoll :: IO a -> NetworkDescription (Behavior a)