3

我有一个Event String我想sink进入文本区域的内容。这工作正常,但现在我想将复选框选择的当前值组合到这个字符串。

首先,我通过使用checkedChange有效但有问题的复选框来做到这一点。如果该checked值下沉到复选框,则没有 checkedChange-Event 并且 textarea 中显示的值未正确更新。

我可以读取复选框选择,get checked但随后我遇到了组合Event String和的问题UI Bool(或者UI String因为布尔值将被转换为字符串)。

编辑:更准确地说,我想做类似的事情

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

where具有复选框属性eCombinedValue的原始Event String值和当前值。checked

我本可以有

bCheck <- stepper False $ UI.checkedChange checkBox

但如果我有,这会失败

element checkBox # sink UI.checked bBool

其他地方(没有UI.checkedChange)。

我可以使用show <$> get UI.checked checkBox,但我必须结合Event StringUI String.

4

1 回答 1

4

这是有意的:该事件仅在用户单击复选框UI.checkedChange时触发,而不是在以编程方式设置时触发。目的是行为代表复选框的规范状态,事件代表用户更改它的请求,这可能会或可能不会被授予。这允许双向数据流另请参阅)。诚然,Threepenny 还没有严格遵循这些想法。bBoolUI.checkedChange

在您的情况下,我建议将UI.checkedChange事件集成到bBool行为中以表示复选框的“规范”状态。如果这不起作用,只需使用get UI.checkedand破解它Reactive.Threepenny.unsafeMapIO

于 2015-06-23T08:23:42.947 回答