angular2搜索

angular2获取数据用列表显示》中我们做了简单的获取数据,并将获取的数据显示在html列表中,这次我们做的是,在文本框中输入关键词,获取服务器数据并显示符合要求的数据。

做这个小例子前,我们需要新建一个项目:

下一步,在app/app.module.ts中导入RxJS Observable扩展

下面来看看实现代码(app/app.component.ts):

这一次我们更加深入的使用了RXJS

首先我们新建一个new Subject,Subject维护着自己的Observer什么是Subject? 在RxJS中,Subject是一类特殊的Observable,它可以向多个Observer多路推送数值。普通的Observable并不具备多路推送的能力(每一个Observer都有自己独立的执行环境),而Subject可以共享一个执行环境。

debounceTime表示实际发起请求的间隔永远不会小于 300ms。

distinctUntilChanged确保只在过滤条件变化时才发送请求, 这样就不会重复请求同一个搜索词了。

switchMap会为每个从debouncedistinctUntilChanged中通过的搜索词调用搜索服务。 它会取消并丢弃以前的搜索observable对象,只保留最近的。

返回最近一次 http 调用返回的observable对象。 这是因为以前的调用都被取消或丢弃了。也就是说,this.http.get(‘http://localhost/angluarjson.php?name=’+term).map((r: Response) => r.json())回返回一个新的observable对象供switchMap使用。

每当调用search时都会调用next来把新的字符串放进该主题的Subject流中。

 

php服务器端代码,我就简单输出内容了,不进行相应的过滤了。

哈哈,明白了吗?就是如此简单。

发表评论