連接:
ionic3 教程(一)安裝和配置
ionic3 教程(二)登陸頁製做
ionic3 教程(三)設置頁製做
ionic3 教程(四)安卓硬件返回鍵處理
ionic3 教程(五)基本的網絡請求html
這是最後一節,本節主要用最簡單網絡請求和基本的內置指令作一個演示。git
一般咱們但願在 HTTP 請求的時候,頁面不會失去響應,因此咱們的 HTTP 請求是異步的。
JavaScript 中,一般用 3 種方式處理異步代碼。github
promise 和 observable 主要三個主要不一樣:json
想更多瞭解 promise 的請看 《JavaScript Promise迷你書》跨域
想更多瞭解 rxjs(observable) 的請看 《rxjs中文教程》promise
在 Angular 中,處理異步代碼的最佳方式就是使用可觀察對象,因此接下來會用到
服務器
導入 Angular 的 HttpModule。網絡
import { HttpModule } from '@angular/http';
//而後在 imports 中插入 HttpModule 便可
複製代碼
原本找了一些別的接口做爲測試,發現不會顯示數據,打開 Chrome 測試了一下發現有跨域問題。架構
XMLHttpRequest cannot load
複製代碼
因此這裏給你們推薦個網站,咱們就用他來進行測試。 http://jsonplaceholder.typicode.com/app
拖到下面的 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下載地址