2015-11-26 2 views
1

Я использую Angular2 Alpha 46. У меня есть компонент списка, как показано ниже. Я хочу наблюдать за событиями щелчка с кнопок PREV и NEXT и вызывать веб-API через обещание получить данные и обновить список.Как наблюдать события DOM в Angular2 с помощью RxJS?

Я не знаю, должен ли я использовать EventEmitter, который поставляется с Angular2 или RxJS, как это.

Может ли кто-нибудь представить пример?

enter image description here

+1

Вы можете либо используйте «EventEmitter», чтобы испускать кнопки, или вы можете использовать ['Observable.fromEvent'] (https://github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/operators/ fromevent.md) * Обратите внимание, что EventEmitter в примере является Node, а не угловым * –

+0

Пример, который вы предоставили, может работать. Но есть ли более лучшее решение, использующее привязку, как описано [здесь] (https://github.com/Reactive-Extensions/rx.angular.js/) с угловым1. –

ответ

1

Я не полный пример, но я могу набросать для вас решение:

В вашем шаблоне привязки к событию щелчка

<button (click)="next()">Next</button> 
 
<button (click)="prev()">Prev</button>

В вашем классе (я думаю, вы используете машинопись) define next() и prev()

import {Http, Headers, HTTP_BINDINGS} from 'angular2/http'; 
 

 

 

 
next() { 
 
    this.http.get("your url") 
 
    .map(res => res.json()) /* if its JSON */ 
 
    .subscribe(
 
     data => this.listdata = data, 
 
     err => console.error(err), 
 
     () => console.log("Done") 
 
    ) 
 
    } 
 

 
prev() { 
 
    /* like next */ 
 
    }

Вы должны импортировать Http и HTTP_BINDINGS.

http.get возвращает наблюдаемый (так называемый поток) не обещание, как в угловой 1

Существует видео учебник от Ayden Towfeek, который показывает, как работать с HTTP и наблюдаемыми на YouTube tutorial

+0

Это видео было полезно. У меня есть несколько [пример кода на GitHub] (https://github.com/ReactiveX/RxJS/issues/811). Я не уверен, что я сделал в этом коде правильно. Я пытаюсь обвести голову функциональным и реактивным программированием. –

Смежные вопросы