【发布时间】:2014-08-15 18:43:53
【问题描述】:
我一直在尝试自学 FRP(特别是 bacon.js),方法是先深入研究一个新项目。我自己已经走了很远,但最近遇到了一个我似乎无法解决的问题:
我有一个带有一组可点击对象的界面。单击对象时,该对象的详细信息将加载到右侧的面板中。
我需要的是能够选择多个,将这些对象累积到一个数组中,并在选择多个时显示“批量操作”面板。
到目前为止我有:
- 代表当前 UI 模式的 SelectMultiple 布尔属性
- 保存当前选定对象的 CurrentObject 流
我已经有点接近了:
var SelectedObjects = CurrentObject.filter(SelectMultiple).skipDuplicates().scan([], function(a,b){
return a.concat([b]);
};
有几个问题:
- SelectedObjects 的值表示选中的对象 一直,当 SelectMultiple 状态改变时它不会重置。
- SelectObjects 的值不包括原来的 CurrentObject(当然因为扫描累加器种子是 空数组,而不是 CurrentObject 的当前值)。
我希望直接使用属性的当前值这一事实似乎暗示这里存在一个基本问题。我有一个想法,答案涉及到翻盖地图和每次 SelectMultiple 更改时产生一个新流,将选定的订单汇集到这个新流中并累积,但我不太清楚应该是什么样子。
当然还有一个额外的问题,skipDuplicates 只会跳过连续的重复。我可能可以自己解决这个问题,但解决该问题的解决方案将是理想的。
任何建议将不胜感激!
【问题讨论】:
标签: javascript frp bacon.js