Rxjs - 重置distinctuntilchanged

时间:2017-06-26 02:47:54

标签: javascript rxjs rxjs5

场合

我想知道是否可以重置distinctUntilChanged部分 这样它就会重现一个重复的值。

所以我的情况是,现在我正在使用这样的功能(仅作为一个例子缩短了。)

    Rx.Observable.fromEvent(textInput, 'keyup')
      .pluck('target','value')
      .filter( (text) => {
          text = text.trim();
          if (!text.length) // empty input field
          {
              this.setState({ list: [] });
          }
          return text.length > 0;
      })
      .debounceTime(300)
      .distinctUntilChanged()

所以在最后,结果创建了一系列div,我可以单击它,然后更改输入的值(下面的调用函数)。

fill_name(name)
{
  $("#company_input").val(name);
  this.setState({ list: [] });
} 

因此,如果我在输入中键入a,那么我使用退格键将其全部删除并重新键入a,observable将不会调用我的函数。

我想要什么

我希望某种方式让fill_name功能重置distinctUntilChanged部分,以便在点击生成的div后再次搜索a

1 个答案:

答案 0 :(得分:2)

假设您有一个Observable of generatedDivClicks $:

const reset$ = generatedDivClicks$.mapTo('reset');

const input$ = Rx.Observable.fromEvent(textInput, 'keyup')
  .pluck('target','value')
  .filter( (text) => {
      text = text.trim();
      if (!text.length) // empty input field
      {
          this.setState({ list: [] });
      }
      return text.length > 0;
  })
  .debounceTime(300);

Rx.Observable.merge(reset$, input$)
    .distinctUntilChanged()
    .filter(x => x !== 'reset')