Frage

I would like to retrieve the widget value.

In the following, pressing the button b retrieve s_in and print it , in native wxhaskell.

b <- button f [text:= "print text in console", 
               on command := textCtrlGetValue s_in >>= putStrLn]

I like to do the same on reactive-banana , but in the following, I get "ff" and not the textCtrlGetValue of s_in2

s_in  <- textCtrl f  []
s_in2 <- textCtrl f  []

b <- button f [text:= "print text in console", 
               on command := textCtrlGetValue s_in >>= putStrLn]



let networkDescription :: forall t. Frameworks t => Moment t ()
    networkDescription = do

    b_in  <- behaviorText s_in "init"
    b_in2 <- behaviorText s_in2 "ff"
    e_butt <- event0 b command


    -- I need an event, triggered by the button, and filled by the b_in2, 

    sink s_in2 [text :== id <$> b_in]     

    reactimate $   (\x -> putStrLn x)  <$> b_in2 <@ e_butt

the sink updates well sin_2 after s_in . but the following reactimate line does not get me the textCtrlGetValue of s_in/ b_in I wish to get . how can I "get" it ?

War es hilfreich?

Lösung

The behavior obtained with the behaviorText function will only react to changes that the user made to the edit box. It does not include programmatic changes, like those performed with the sink function.

Distinguishing between user events and programmatic events is essential for writing responsive UI elements that have bidirectional data flow. See the CurrencyConverter example for a demonstration.

If you want to keep track of programmatic changes, I recommend to stay "within the FRP world", i.e. to use the behavior b_out = id <$> b_in instead of trying to read the text from the widget.

(By the way, id <$> x = x.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top