欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解AngularJS2 Http服務(wù)

 更新時(shí)間:2017年06月26日 14:08:58   作者:Ranest  
本篇文章主要介紹了詳解AngularJS2 Http服務(wù),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

關(guān)于http服務(wù)

HttpModule并不是angular的核心模塊,它是一個(gè)附加的模塊,存在于@angular/http中,雖然如此但是依然可以在需要的時(shí)候使用它,只需要在使用之前引入即可。對(duì)于大多數(shù)app來(lái)說(shuō)使用http服務(wù)是很常見(jiàn)的,所以我們將HttpModule加入到AppModule的import列表和應(yīng)用的根組件中,這樣就可以在整個(gè)應(yīng)用中使用http服務(wù)了

在自定義服務(wù)中使用Http服務(wù)

http服務(wù)通過(guò)其get方法獲取數(shù)據(jù),他會(huì)返回RxJS Observable,我們希望使用的數(shù)據(jù)是Promise,然而 Observable 并沒(méi)有toPromise()方法,可以在自定義服務(wù)中這樣引入

import 'rxjs/add/operator/toPromise';

如此就拓展了Observable的功能了

具體代碼如下

import { Injectable }  from '@angular/core';

import { Headers, Http } from '@angular/http';

import 'rxjs/add/operator/toPromise';

import { Hero } from './hero';
 private heroesUrl = 'api/heroes'; // URL to web api

 constructor(private http: Http) { }

 getHeroes(): Promise<Hero[]> {
  return this.http.get(this.heroesUrl)
        .toPromise()
        .then(response => response.json().data as Hero[])
        .catch(this.handleError);
 }

 private handleError(error: any): Promise<any> {
  console.error('An error occurred', error); // for demo purposes only
  return Promise.reject(error.message || error);
 }

在回調(diào)函數(shù)then()中調(diào)用了返回對(duì)象的json()方法將data從返回對(duì)象中分離出來(lái)

.then(response => response.json().data as Hero[])

 這里的.data是因?yàn)榉祷貙?duì)象中有data這個(gè)屬性,具體情況下會(huì)不一樣

注意:Http failure是經(jīng)常發(fā)生的,必須預(yù)料到會(huì)有異常的可能,所以在方法最后捕獲了異常并將其傳遞給異常處理器,使用Promise.reject()將錯(cuò)誤信息返回給服務(wù)調(diào)用者

利用服務(wù)實(shí)現(xiàn)數(shù)據(jù)的增刪改查

信息查詢

可以在請(qǐng)求url里面帶上參數(shù),這樣就可以將參數(shù)傳到后臺(tái),服務(wù)器查到信息后返回到前臺(tái)

  getHero(id: number): Promise<Hero> {
    const url = `${this.heroesUrl}/${id}`;
    return this.http.get(url).toPromise()
   .then(response => response.json().data as Hero)
   .catch(this.handleError);
  }

修改信息

在自定義服務(wù)中

  private headers = new Headers({'Content-Type': 'application/json'});
  update(hero: Hero): Promise<Hero> {
  const url = `${this.heroesUrl}/${hero.id}`;
  return this.http
  .put(url, JSON.stringify(hero), {headers: this.headers})
  .toPromise()
  .then(() => hero)
  .catch(this.handleError);
}

依然是在url后帶上id告知服務(wù)器要修改的記錄標(biāo)識(shí),JSON.stringify()將對(duì)象轉(zhuǎn)化成json字符串,通過(guò)put將字符串放到請(qǐng)求中,header說(shuō)明了請(qǐng)求體的類型

在調(diào)用服務(wù)的組件中

   save(): void {
   this.heroService.update(this.hero)
    .then(() => this.goBack());
  }

修改成功后返回前一個(gè)視圖

添加信息

在自定義服務(wù)中

 create(name: string): Promise<Hero> {
 return this.http
  .post(this.heroesUrl, JSON.stringify({name: name}), {headers: this.headers})
  .toPromise()
  .then(res => res.json().data)
  .catch(this.handleError);
}

刪除信息

在自定義服務(wù)中

  delete(id: number): Promise<void> {
   const url = `${this.heroesUrl}/${id}`;
   return this.http.delete(url, {headers: this.headers})
    .toPromise()
    .then(() => null)
    .catch(this.handleError);
  }

這步只是將后臺(tái)的信息刪除了,但是本地?cái)?shù)組中依然存在,所以依然會(huì)在視圖中顯示,所以就要在組建中進(jìn)行一些處理

delete(hero: Hero): void {
 this.heroService
   .delete(hero.id)
   .then(() => {
    this.heroes = this.heroes.filter(h => h !== hero);
    if (this.selectedHero === hero) { this.selectedHero = null; }
   });
}

這步就是將已經(jīng)刪除的數(shù)據(jù)從本地?cái)?shù)組中過(guò)濾掉

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • AngularJS入門教程之過(guò)濾器用法示例

    AngularJS入門教程之過(guò)濾器用法示例

    這篇文章主要介紹了AngularJS過(guò)濾器用法,結(jié)合實(shí)例形式簡(jiǎn)單的分析了AngularJS過(guò)濾器的功能及基本用法,并舉例說(shuō)明了自定義過(guò)濾器的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-11-11
  • 什么是 AngularJS?AngularJS簡(jiǎn)介

    什么是 AngularJS?AngularJS簡(jiǎn)介

    這篇文章主要介紹了什么是 AngularJS?AngularJS簡(jiǎn)介,本文講解了AngularJS方方面面的基礎(chǔ)知識(shí),AngularJS 是一個(gè)為動(dòng)態(tài)WEB應(yīng)用設(shè)計(jì)的結(jié)構(gòu)框架。它能讓你使用HTML作為模板語(yǔ)言,通過(guò)擴(kuò)展HTML的語(yǔ)法,讓你能更清楚、簡(jiǎn)潔地構(gòu)建你的應(yīng)用組件,需要的朋友可以參考下
    2014-12-12
  • 如何通過(guò)簡(jiǎn)單的代碼描述Angular父組件、子組件傳值

    如何通過(guò)簡(jiǎn)單的代碼描述Angular父組件、子組件傳值

    Vue組件是學(xué)習(xí)Vue框架最比較難的部分,下面這篇文章主要給大家介紹了關(guān)于如何通過(guò)簡(jiǎn)單的代碼描述Angular父組件、子組件傳值的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • AngularJS 簡(jiǎn)單應(yīng)用實(shí)例

    AngularJS 簡(jiǎn)單應(yīng)用實(shí)例

    本文主要介紹AngularJS 的簡(jiǎn)單應(yīng)用實(shí)例,這里對(duì)AngularJS的知識(shí)總結(jié),并提供實(shí)例代碼和應(yīng)用程序講解,有需要的小伙伴可以參考下
    2016-07-07
  • 對(duì)angularjs框架下controller間的傳值方法詳解

    對(duì)angularjs框架下controller間的傳值方法詳解

    今天小編就為大家分享一篇對(duì)angularjs框架下controller間的傳值方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • AngularJS 防止頁(yè)面閃爍的方法

    AngularJS 防止頁(yè)面閃爍的方法

    我們知道在應(yīng)用的頁(yè)面或者組件需要加載數(shù)據(jù)時(shí),瀏覽器和angular渲染頁(yè)面都需要消耗一定的時(shí)間。這篇文章主要介紹了AngularJS 防止頁(yè)面閃爍的方法,需要的朋友可以參考下
    2017-03-03
  • angularJs復(fù)選框checkbox選中進(jìn)行ng-show顯示隱藏的方法

    angularJs復(fù)選框checkbox選中進(jìn)行ng-show顯示隱藏的方法

    今天小編就為大家分享一篇angularJs復(fù)選框checkbox選中進(jìn)行ng-show顯示隱藏的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Angular5給組件本身的標(biāo)簽添加樣式class的方法

    Angular5給組件本身的標(biāo)簽添加樣式class的方法

    本篇文章主要介紹了Angular 5 給組件本身的標(biāo)簽添加樣式class的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • 使用AngularJS2中的指令實(shí)現(xiàn)按鈕的切換效果

    使用AngularJS2中的指令實(shí)現(xiàn)按鈕的切換效果

    這篇文章主要介紹了使用AngularJS2中的指令實(shí)現(xiàn)按鈕的切換效果,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • 淺談angularjs module返回對(duì)象的坑(推薦)

    淺談angularjs module返回對(duì)象的坑(推薦)

    下面小編就為大家?guī)?lái)一篇淺談angularjs module返回對(duì)象的坑(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10

最新評(píng)論