2016-07-30 4 views
1

텍스트 필드를 사용하여 변경 사항을 기록하려고합니다. 당신이 제출했을 때 change 만 추적 할 수 있다는 것을 알았습니다. 그래서 키패드를 사용하고 있었지만, 텍스트 필드에 마우스를 사용하여 붙여 넣으면 발견하지 못했기 때문에 해피를 느낍니다. 텍스트 필드의 변경 사항을 관찰하는 더 엄격한 방법이 있습니까?텍스트 필드 값 가져 오기

var textField = document.getElementById('message-input'); 
Rx.Observable.fromEvent(textField, 'keyup') 
    .subscribe(_ => console.log(textField.value)); 

답변

3

이것은 Rx의 일반적인 문제가 아닙니다. 그러나 Rx의 관점에서 볼 때 어떤 이벤트를 사용하든 관계없이 모든 이벤트를 병합 할 수 있으며 distinctUntilChanged()을 사용하면 중복 이벤트가 발생하지 않도록 할 수 있습니다.

var keyup = Rx.Observable.fromEvent(textField, 'keyup', e => e.target.value); 
var focus = Rx.Observable.fromEvent(textField, 'focus', e => e.target.value); 


Rx.Observable.merge(keyup, focus) 
    .distinctUntilChanged() 
    .subscribe(x => console.log(x)); 
+0

좋은 점은 DOM 모니터링을위한 RxJS 구현을 더 잘 이해하려고하는 것뿐입니다. – Rob

관련 문제