将RX observable附加到输入框

时间:2016-12-08 11:11:12

标签: angularjs rxjs

我是RXJS的新手,我正在尝试将RX observable附加到输入框。到目前为止,我有以下代码可用...

$onInit() {
    this.$timeout(() => {
        let $input = document.getElementById('input_33');
        const weeks$ = this.rx.Observable.fromEvent($input, 'keyup');
        const queries$ = weeks$
            .map(e => e.target.value)
            .distinctUntilChanged()
            .debounce(500);

        queries$.subscribe(val => console.log(val));
    });
}

因此,上面的代码将在keyup上控制记录#input_33的值。

我必须添加$ timeout来等待输入出现在DOM中。有没有更好的方法来做,因为我宁愿不必使用超时?我正在使用Angular 1.5x

1 个答案:

答案 0 :(得分:0)

看起来你在执行rx编程时错了。当发现来自可观察事件的事件时,观察者自动被调用。

你不应该使用$ timeout来等待输入出现在DOM中。您可以将代码放在控制器中,因为当控制器被调用时,DOM Ready已经被触发,因此输入字段已经可用。