Сочетание Event и атрибута в трипенни-гуй

У меня есть Event String который я хочу sink в текстовую область. Это работает нормально, но теперь я хочу объединить текущее значение выбора флажка с этой строкой.

Сначала я сделал это с помощью checkedChange флажка, который работает, но есть проблема. Если checked значение передается в флажок, флажок CheckChange-Event отсутствует, а значение, отображаемое в текстовой области, не обновляется должным образом.

Я мог бы прочитать выбор флажка с get checked но потом я сталкиваюсь с проблемами в сочетании Event String а также UI Bool (или же UI String поскольку логическое значение будет преобразовано в строку).

РЕДАКТИРОВАТЬ: Чтобы быть более точным, я хочу сделать что-то вроде

bCombinedValue <- stepper "" eCombinedValue
element textArea # sink UI.text bCombinedValue

где eCombinedValue имеет оригинал Event String и текущее значение checked атрибут флажка.

я мог бы иметь

bCheck <- stepper False $ UI.checkedChange checkBox

но это не удастся, если у меня есть

element checkBox # sink UI.checked bBool

где-то еще (нет UI.checkedChange).

я могу использовать show <$> get UI.checked checkBox но тогда я должен был бы объединить Event String а также UI String,

1 ответ

Решение

Это намеренно: UI.checkedChange событие срабатывает только тогда, когда пользователь нажимает на флажок, но не тогда, когда оно установлено программно. Предполагается, что bBool поведение представляет каноническое состояние флажка и UI.checkedChange событие представляет собой запрос пользователя на его изменение, которое может быть или не быть предоставлено. Это позволяет двунаправленный поток данных ( см. Также). По общему признанию, Threepenny только строго не следует за этими идеями.

В вашем случае я рекомендую интегрировать UI.checkedChange событие в bBool поведение для представления "канонического" состояния флажка. Если это не сработает, просто взломайте его get UI.checked а также Reactive.Threepenny.unsafeMapIO,

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