Динамические элементы на основе поведения в трипенни-гуй
Проще говоря, я ищу способ отображения Behaviour (UI Element)
,
Мой фактический вариант использования - отображение таблицы, которую можно отфильтровать. Итак, у меня есть функция tableElement :: String -> UI Element
(String
параметр является условием фильтра) и поле ввода filterElement :: Element
, который представляет фильтр. Самый естественный способ для меня это объединить примерно так:
bFilter <- stepper "" (valueChange filterElement)
displaySomehow (fmap tableElement bFilter)
Так же и в Эльме.
Самая близкая вещь, которую я нашел до сих пор, использует sink children
, но это работает только с [Element]
а не с [UI Element]
, Кроме того, я должен использовать фиктивный элемент в качестве родителя или возиться с оставшимися потомками.
Каков наилучший способ реализовать что-то подобное с помощью tripenny-gui?
2 ответа
(Автор здесь)
Обратите внимание, что UI Element
представляет действие, которое при выполнении может создать новый Element
, Вам придется выполнить действие, чтобы сделать последнее. К сожалению, в настоящее время нет способа сделать это полностью в стиле FRP, вам придется прибегнуть к onChanges
комбинатор для создания таблицы заново при каждом изменении фильтра. Там вы можете использовать set children
,
Пример:
onChanges bFilter $ \s -> do
el <- tableElement s
myTable # sink children [el]
Примеры Bartab.hs и CRUD.hs могут иметь отношение к вашей ситуации.
Ты можешь использовать currentValue
чтобы получить UI Element
оттуда вы (надеюсь) в UI
и может получить элемент для включения в HTML.