使用来自不同流的属性值

时间:2015-04-06 15:19:23

标签: frp bacon.js

这是一些简化的代码。我按一个按钮,它设置了一些配置。然后,当用户提交表单时,需要读取配置的最新值。我正试图成为所有FRP,避免设置正常变量。

var currentConfig = $('#authenticateCont #btnFormType')
        .asEventStream('click')
        .map(function (e) {
          ...
        });

$('#authenticateCont form')
        .asEventStream('submit')
         .combine(currentConfig, function(r, c) {
            return {
                response: r,
                config: c
            };
        })
        .onValue(function(e){
          ...
        });

这样做除了以下事实:当配置更改时,会导致按钮单击触发的处理程序,就像表单已提交一样。显然我不想要这个。

需要提交表单时,它会从配置中读取最新值。我需要类似'combineLeft'操作的东西,它不存储最近的提交事件。

来吧......这么简单的事情怎么会这么棘手?按一个按钮,读取一个值!

1 个答案:

答案 0 :(得分:1)

  

我需要类似于' combineLeft'操作

是的,有类似的东西:property.sampledBy(stream)。只要单击“提交”按钮,它就会从config属性中获取当前值:

var submit = $('#authenticateCont form').asEventStream('submit');
currentConfig.sampledBy(submit, function(c, e) {
    return {event: e, config: c};
})
.onValue(function(e) { … });