javascript - RxDom : Update content of div recursive when an input is changed

标签 javascript rxjs rxjs-dom

我正在使用Reactive Extension DOM用于监听来自 DOM 的事件。目前我遇到一个问题:我有一个输入A、div B和div C。更改输入A将影响B,更改B的内容将更改div C的内容。所以,这意味着:如果我更改输入A,div B div C 会自动改变。

目前我遇到问题:当输入 A 更改时,输入 B 成功更改,但 C 没有更改。我不知道是因为 RxDom 不支持更改递归还是因为 div 没有更改事件。这是我的简短代码:

var input = document.getElementById('test_id');
    var source = Rx.DOM.change(input);
    var subscription = source.subscribe(
            function (x) {
              console.log(x);
            },
            function (err) {
              console.log('Error: ' + err);
            },
            function () {
              console.log('Completed');
            });

显然,我可以监听输入 A 的事件,然后更改 C,但这并不是我真正想要的方式,它看起来像是一个解决方法版本。因为业务原因,div C 依赖于 div B 而不是输入 A。

最佳答案

Rx将订阅输入的change事件。 change 事件仅在实际用户输入时触发,但您的值会以编程方式更改。

你的问题是:你自己输入A,触发A的change -> A上的订阅将运行 -> B以编程方式更改 -> change未在 B 上触发 -> B 上的订阅将不会运行:)

解决方案是:当您更改 B 的值时,您再次手动触发 change 事件。您还应该注意,您必须在纯 javascript 上执行此操作,而不是在 jquery 上执行此操作。下面是一个示例代码:

var event = new Event('change');
div_b_element.dispatchEvent(event);

下面的代码将不起作用。因为RxJS只订阅javascript原生事件,而不订阅jquery事件。请小心,因为这会花费您很长时间进行调试。

$(div_b_element).trigger( "change" );

关于javascript - RxDom : Update content of div recursive when an input is changed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40015709/

相关文章:

angular - RxJs Observable in Observable from Array

rxjs - 需要帮助理解这个 Ngrx 效果

angular - 解决超过 6 个 forkJoin 参数的问题?

javascript - d3js - 如何为可以更新的多组元素绘制多折线图图表?

javascript - 从 Java 脚本 (TVML) 调用带有完成处理程序的 Swift 函数

javascript - 如何在 "javascript class"中重新定义一个方法

angular - typescript - 类型 'userId' 上不存在属性 'unknown'

javascript - 如何使用 RxJS 显示一个 "user is typing"指标?

rxjs - 我可以通过 Redux-Observable 使用 RxJS-DOM 而不是 RxJS

javascript - PrestaShop MultiShops 类名称更改