Сочетание 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
,