реактивно-банановый реактив для получения значения textCtrl виджета, такого как textCtrlGetValue

Я хотел бы получить значение виджета.

Далее, нажав кнопку b, извлеките s_in и распечатайте его в родном wxhaskell.

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

Мне нравится делать то же самое с reactive-banana , но в дальнейшем я получаю «ff», а не textCtrlGetValue 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

сток хорошо обновляет sin_2 после s_in . но следующая строка реакции не дает мне textCtrlGetValue s_in/b_in, который я хочу получить. как я могу "получить" его?


person Luc Taesch    schedule 24.03.2013    source источник


Ответы (1)


Поведение, полученное с помощью функции behaviorText, будет реагировать только на изменения, внесенные пользователем в поле редактирования. Он не включает программные изменения, подобные тем, которые выполняются с помощью функции sink.

Различие между пользовательскими и программными событиями необходимо для написания адаптивных элементов пользовательского интерфейса, которые имеют двунаправленный поток данных. Для демонстрации см. CurrencyConverter.

Если вы хотите отслеживать программные изменения, я рекомендую оставаться «внутри мира FRP», то есть использовать поведение b_out = id <$> b_in вместо того, чтобы пытаться читать текст из виджета.

(Кстати, id <$> x = x.)

person Heinrich Apfelmus    schedule 25.03.2013
comment
Сначала спасибо за быстрый ответ. Я заметил двунаправленный поток данных и удивился, почему в то время он не зацикливался! Теперь буду знать, спасибо! Раньше я не замечал этого важного разделения понятий. Теперь еще одна тема, которую я пересек (задокументирован здесь ) заключается в том, как я могу взаимодействовать с Моделью и графическим интерфейсом, имея в виду, что модель не является специфичной для графического интерфейса или WX ( _ график в примере не является графиком зависимостей виджетов (типично для FRP), а график диаграммы для представления _ ) - person Luc Taesch; 02.04.2013