【问题标题】:Use value of property from a different stream使用来自不同流的属性值
【发布时间】:2015-04-06 15:19:23
【问题描述】:

这里有一些简化的代码。我按下一个按钮,它会设置一些配置。然后当用户提交表单时,它需要读取配置的最新值。我正在努力成为所有 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){
          ...
        });

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

需要是表单提交时,从config中读取最新的值。我需要不存储最新提交事件的“combineLeft”操作。

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

【问题讨论】:

    标签: frp bacon.js


    【解决方案1】:

    我需要像“combineLeft”这样的操作

    是的,有类似的东西:property@987654321@(stream)。每当您单击提交按钮时,它都会从配置属性中获取当前值:

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

    【讨论】:

    • aha...是的,您必须稍微调整一下,让配置流最终处理表单点击。
    • 我认为我的 combineLeft 想法更直观。
    • 看起来使用属性调用的 map 函数不需要您将其转过来,但我不确定届时是否/如何访问流值。
    • sampledBy 得到一个组合函数,但 map 没有。
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2017-11-11
    • 2016-03-23
    • 1970-01-01
    相关资源
    最近更新 更多