资讯专栏INFORMATION COLUMN

ionic3 教程(五)基本的网络请求

bbbbbb / 765人阅读

摘要:链接教程一安装和配置教程二登录页制作教程三设置页制作教程四安卓硬件返回键处理教程五基本的网络请求这是最后一节,本节主要用最简单网络请求和基本的内置指令做一个演示。接收数据用依赖注入网络请求会返回一个对象。

链接:
ionic3教程(一)安装和配置
ionic3教程(二)登录页制作
ionic3教程(三)设置页制作
ionic3教程(四)安卓硬件返回键处理
ionic3 教程(五)基本的网络请求

这是最后一节,本节主要用最简单网络请求和基本的内置指令做一个演示。

对 Angular 的基本架构不熟悉的请点Angular 4.0 架构详解

对 Angular 的内置指令不熟悉的请点Angular 4.0 内置指令全攻略

前言

通常我们希望在 HTTP 请求的时候,页面不会失去响应,所以我们的 HTTP 请求是异步的。
JavaScript 中,通常用 3 种方式处理异步代码。

回调(callback)

承诺(promise)

可观察对象(observable)

promise 和 observable 主要三个主要不同:

observable 可以中途取消,promise 发出就不行

observable 可以持续发射很多值,而 promise 只能发射一个值就结束了

observable 提供了更多的工具函数,最常用的是 filter 等

想更多了解 promise 的请看
《JavaScript Promise迷你书》

想更多了解 rxjs(observable) 的请看
《rxjs中文教程》

在 Angular 中,处理异步代码的最佳方式就是使用可观察对象,所以接下来会用到

app.module.ts

导入 Angular 的 HttpModule。

import { HttpModule } from "@angular/http";

//然后在 imports 中插入 HttpModule 即可
测试用接口

本来找了一些别的接口作为测试,发现不会显示数据,打开 Chrome 测试了一下发现有跨域问题。

XMLHttpRequest cannot load

所以这里给大家推荐个网站,我们就用他来进行测试。
http://jsonplaceholder.typico...

拖到下面的 Resources 可以看到图片。从图中可以看出接口种类还是比较丰富的,我们选择带图片的 /photos 进行测试。

home.ts
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。

home.html

  
    首页
  



  
    
      
        
      
      {{item?.title}}
    
  

这里使用了一个 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下载地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/51147.html

相关文章

  • ionic3 教程基本网络请求

    摘要:链接教程一安装和配置教程二登录页制作教程三设置页制作教程四安卓硬件返回键处理教程五基本的网络请求这是最后一节,本节主要用最简单网络请求和基本的内置指令做一个演示。接收数据用依赖注入网络请求会返回一个对象。 showImg(https://segmentfault.com/img/remote/1460000010805290); 链接: ionic3教程(一)安装和配置 ionic...

    MudOnTire 评论0 收藏0
  • 【响应式编程思维艺术】 (5)Angular中Rxjs应用示例

    摘要:本文是响应式编程第四章构建完整的应用程序这篇文章的学习笔记。涉及的运算符每隔指定时间将流中的数据以数组形式推送出去。中提供了一种叫做异步管道的模板语法,可以直接在的微语法中使用可观测对象示例五一点建议一定要好好读官方文档。 本文是【Rxjs 响应式编程-第四章 构建完整的Web应用程序】这篇文章的学习笔记。示例代码托管在:http://www.github.com/dashnoword...

    shenhualong 评论0 收藏0
  • LeanCloud + Ionic3 迅速重构应用

    摘要:的数据强制刷新由于的数据绑定与更新策略,有时取回数据时数据并不能引起页面的变更,这时候就需要强制刷新页面绑定的数据了。这次重构差不多就用了四天的时间,写了个个个,按时交活儿希望本文可以在小应用的快速构建上给大家一个参考 作者:李宜栋 ​​【 玩转 LeanCloud 】开发者经验分享: 学校有一个高考志愿填报的应用需要重构,之前的实现是通过构建 Laravel RESTful API ...

    geekidentity 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<