尝试建立一些东西,但陷入困境并丢失这里的任何错误。我想跟踪按钮的点击,但是从#zip输入中获取值,所以这就是为什么我选择mapTo的原因。当我删除mapTo时,我可以跟踪单击并更改订阅函数中的语句,以使用#zip输入的内容更新结果div文本(与我在mapTo中所做的完全一样),这使我感到困惑,因为我认为表示语法还可以。

   Rx.Observable.fromEvent(document.getElementById('btn'),'click')
     .mapTo($('#zip').val())
      .subscribe(function(zipCode){
         $('#result').text(zipCode);
      });


jsbin

最佳答案

如果我了解您要执行的操作,则您尝试在事件发生时使用当前值$('#result')更新$('#zip')

运算符mapTo()以单个值作为参数。然后使用此值,而不是使用来自其来源的每个值。实际上,这意味着在创建Observable链时(甚至在订阅之前),仅将.mapTo($('#zip').val())初始化一次。

如果希望它始终是实际值,则需要一些将回调作为参数的运算符。例如只是map()

Rx.Observable.fromEvent(document.getElementById('btn'), 'click')
  .map(function(val) {
    return $('#zip').val();
  })
  .subscribe(function(zipCode){
    $('#result').text(zipCode);
  });


您更新的演示:http://jsbin.com/qepalo/1/edit?html,js,console,output

10-06 04:04