摆弄一个bacon.js。我想在一组文本输入中保持一个连续的值。github 站点上的示例使用.scan
了一个加法器函数,该函数适用于该示例,因为它在流中使用了 -1 和 +1。但是,如果值被编辑,我希望从流中删除它们,因此该.scan
解决方案对我不起作用,或者我做得不对。
标记:
<ul style="repeat-direction: vertical; list-style-type: none;">
<li><input data-group="0"></li>
<li><input data-group="0"></li>
<li><input data-group="0"></li>
</ul>
<ul style="repeat-direction: vertical; list-style-type: none;">
<li><input data-group="1"></li>
<li><input data-group="1"></li>
<li><input data-group="1"></li>
</ul>
因此,我所拥有的解决方案是在出现节流 keyup 事件时遍历输入,然后在它更改时更新跨度。
groupZeroEvents = events.filter (val) ->
Math.floor(val[0]) == 0 # the stream contains the group the input belongs to
groupZeroEvents.onValue (val) ->
sum = 0
$("input[data-group='0']").each (i,el) ->
sum += Math.floor($(el).val())
$('span#sum-g0').html(sum)
它工作正常,但看起来很蹩脚——感觉就像我错过了Bacon.js
正确使用的方法。