连接:
ionic3教程(一)安装和配置
ionic3教程(二)登陆页制做
ionic3教程(三)设置页制做
ionic3教程(四)安卓硬件返回键处理
ionic3 教程(五)基本的网络请求html
这是最后一节,本节主要用最简单网络请求和基本的内置指令作一个演示。git
一般咱们但愿在 HTTP 请求的时候,页面不会失去响应,因此咱们的 HTTP 请求是异步的。
JavaScript 中,一般用 3 种方式处理异步代码。github
promise 和 observable 主要三个主要不一样:
想更多了解 promise 的请看
《JavaScript Promise迷你书》json
想更多了解 rxjs(observable) 的请看
《rxjs中文教程》segmentfault
在 Angular 中,处理异步代码的最佳方式就是使用可观察对象,因此接下来会用到
跨域
导入 Angular 的 HttpModule。promise
import { HttpModule } from '@angular/http'; //而后在 imports 中插入 HttpModule 便可
原本找了一些别的接口做为测试,发现不会显示数据,打开 Chrome 测试了一下发现有跨域问题。服务器
XMLHttpRequest cannot load
因此这里给你们推荐个网站,咱们就用他来进行测试。
http://jsonplaceholder.typico...网络
拖到下面的 Resources 能够看到图片。从图中能够看出接口种类仍是比较丰富的,咱们选择带图片的 /photos 进行测试。架构
import { Http, Response } from '@angular/http'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { // 接收数据用 listData: Object; // 依赖注入 constructor(public navCtrl: NavController, private http: Http) { } ionViewDidLoad() { // 网络请求 this.http.request('http://jsonplaceholder.typicode.com/photos') .subscribe((res: Response) => { this.listData = res.json(); }); }
http.request 会返回一个 Observable 对象。咱们可使用 subscribe 订阅变化。
当 http.request 从服务器返回一个流时,它就会发出一个 Response 对象。咱们用 json 方法提取出响应体解析成一个 Object,最后将它赋值给 this.listData。
<ion-header> <ion-navbar> <ion-title>首页</ion-title> </ion-navbar> </ion-header> <ion-content padding> <ion-list *ngFor="let item of listData"> <ion-item> <ion-avatar item-left> <img [src]="item?.url"> </ion-avatar> {{item?.title}} </ion-item> </ion-list> </ion-content>
这里使用了一个 ngFor 遍历了 listData,生成了一个列表数据。还有一点要提一下,这个 item?.title
是 Angular 的一种语法,若是对象为空就不会取值,能够防止报错。
最后效果如图所示
再补上一个 Promise 的写法
import 'rxjs/add/operator/toPromise'; this.http.request('http://jsonplaceholder.typicode.com/photos') .toPromise() .then(res => { this.listData = res.json(); }) .catch(err => { console.error(err) });
本身动手试一试吧。这个入门系列结束以后,应该会去找一些模块进行深刻点的展开。
Demo 下载地址