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>
したがって、私が持っている解決策は、スロットルされたキーアップイベントがあるときはいつでも入力を実行し、それが変更されたときにスパンを更新することです。
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
正常に動作しますが、うまくいかないようです。正しく使用する方法が欠けているように感じます。