【问题标题】:RxJs, not display in dom, but console worksRxJs,不在dom中显示,但控制台工作
【发布时间】:2019-02-21 08:19:48
【问题描述】:

为什么输出只显示在一个元素中 (#skip-result 或 #distinct-result)不是他们两个?

但是如果我尝试从这两个 observable 中输出结果 下面来控制台它的工作原理

您可以查看代码here

var input$ = Rx.Observable.fromEvent(input,'input')


var x$ = input$
  .debounce(1000)



// skip two character in string, from input value
// then, display it in #skip-result
x$
  .map(v=> v.target.value)
  .filter(v=> v.length > 2)
  .flatMap(v=> 
           Rx
             .Observable
             .from(v)
             .skip(2)
             .reduce((x,y)=> x + y)
  )
  .subscribe(s=>{
    $('#skip-result').text('Skip Value is ' + s)
  })



// search distinct in string, from input value
// then, display it in #distinct-result
x$
  .map(e=> e.target.value)
  .filter(e=> e.length > 0)
  .flatMap(v=> 
           Rx
             .Observable
             .from(v)
             .distinct()
             .reduce((x,y)=> x + y)
  )
  .subscribe(x=>{
    $('#distinct-result').text('Distinct value is ' +x)
  })

【问题讨论】:

    标签: rxjs observable reactive-programming observer-pattern reactive


    【解决方案1】:

    在您引用的 JSBin 中,您尚未导入 jQuery,但您似乎正在使用 jQuery 选择器来设置 #skip-result#distinct-result DOM 元素的内容。这将引发错误。

    如果您改为将它们更改为设置 innerHTML 属性(一个订阅看起来已经在执行此操作),您应该会获得预期的行为。

    .subscribe(s => {
      skipResult.innerHTML = 'Skip Value is ' + s
    })
    

    编辑

    再看一遍后,您的标记没有正确关闭。具体来说,#skip-result 正在成为#distinct-result 的子级。

    【讨论】:

    • 再看一眼,我只是注意到您的标记没有正确关闭(请参阅我的编辑)。 Here's a working fork of your JSBin.
    • 行了,谢谢我之前忘了关闭<div>标签
    猜你喜欢
    • 2019-09-20
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    • 2022-12-11
    • 2021-10-23
    • 2015-12-25
    • 2015-04-09
    • 1970-01-01
    相关资源
    最近更新 更多