Это можно сделать естественным образом с помощью наблюдаемых RxJS. Они хорошо подходят для таких целей, то есть для создания реактивных интерфейсов и широко используются в Angular.
Наблюдаемое - это, в основном, поток значений, которые можно преобразовать и, в конце концов, подписать. Он имеет много общего с обещаниями, которые были предложены в другом ответе, но наблюдаемые результаты приводят к последовательности значений, в то время как обещание приводит к одному значению.
RxJS содержит расширенные функциональные возможности, включая поддержку событий DOM. RxJS fromEvent
(см. краткое руководство ) заменяет addEventListener
и создает поток событий щелчка, который может быть сопоставлен с другим значением (входное значение формы):
addItem() {
let plus = document.querySelector('.plus');
return Observable.fromEvent(plus, 'click')
.map((event) => {
return document.querySelector('.count').innerHTML;
});
}
Наблюдение подписывается в месте, где должны быть получены значения:
getNum(){
this.numSubscription = this.view.addItem().subscribe(num => {
this.module.addNum(num);
});
}
Поток значений можно остановить, отписавшись от наблюдаемой, this.numSubscription.unsubscribe()
. Это внутренне вызовет removeEventListener
.
Вот демо .