RxDom:当输入改变时递归更新 div 的内容
RxDom: Update content of div recursive when an input is changed
我正在使用 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,但这并不是我真正想要的方式,它看起来像是一个变通版本。因为业务原因,divC依赖divB而不是输入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" );
我正在使用 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,但这并不是我真正想要的方式,它看起来像是一个变通版本。因为业务原因,divC依赖divB而不是输入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" );