Обновить список из n значений пользовательского интерфейса

Я ищу способ обновить произвольное количество UI.inputs на основе valueChange в любом из входов.

Вот игрушечный пример с двумя входами:

import qualified Graphics.UI.Threepenny as UI
import Graphics.UI.Threepenny.Core
import Graphics.UI.Threepenny.JQuery

main :: IO ()
main = do 
     startGUI defaultConfig setup
     return ()

setup ::  Window -> UI ()
setup w = do 
            textboxes <- do
              tb1 <- UI.input 
              tb2 <- UI.input
              update1 <- stepper "red" $ UI.valueChange tb1
              update2 <- stepper "green" $ UI.valueChange tb2
              element tb1 # sink value (fmap reverse update2)
              element tb2 # sink value (fmap reverse update1)
              return $ column [return tb1, return tb2]

            getBody w #+ [textboxes]
            return ()

Все, что написано в одном из текстовых полей, копируется (переворачивается) в другое текстовое поле.

Теперь, что, если я хотел бы иметь список произвольной длины входных интерфейсов, и любая вещь, записанная в любой из входов, копируется во все остальные? Я могу достаточно легко создать список пользовательских интерфейсов, но как мне прочитать их все, применить функцию к их входным данным (например, обратный), а затем включить изменение во все остальные?

Какие-нибудь мысли?

1 ответ

Я не знаком со всем, что вы упомянули, но вы могли бы использовать монадическую структуру и некоторые стандартные функции, чтобы сделать что-то вроде этого:

textboxes <- do
  tbs <- replicateM 3 UI.input
  forM_ tbs $ \tbX -> do
    update <- stepper "_" $ UI.valueChange tbX
    forM_ tbs $ \tbY -> do
      element tbY # sink value (fmap reverse update)
  return $ column (map return tbs)

stepper Аргумент является статическим, и я думаю, что вам потребуется способ пропустить запускающий элемент управления при обновлении, но с точки зрения обобщения от двух элементов управления до списка элементов управления я думаю, что это может быть правильное направление?

Другие вопросы по тегам