Динамические элементы на основе поведения в трипенни-гуй

Проще говоря, я ищу способ отображения 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.

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