ionic3中通過service定義全局參數(shù)和方法

為了方便管理狈究,打算將GET和POST請(qǐng)求定義成一個(gè)公共方法來調(diào)用属韧,另外調(diào)用的URL也可以定義到全局安拟。
廢話不多說,看代碼~
1宵喂、首先定義一個(gè)service糠赦,我們命名為app.service.ts,放到app目錄下即可锅棕。
里面還有一些其他有用的方法拙泽,大家可以參考,當(dāng)然也可以自己添加啦~

import { LoadingController, AlertController, ToastController } from 'ionic-angular';
import { Injectable } from '@angular/core';
import {HttpClient, HttpParams} from "@angular/common/http";

@Injectable()
export class AppGlobal {
  static BASE_URL='http://localhost:8088/ZTEMAS/';
}

@Injectable()
export class AppService {

  constructor(public http: HttpClient, public loadingCtrl: LoadingController, private alertCtrl: AlertController, private toastCtrl: ToastController, ) { }


  GET(url: string, params: HttpParams, callback ?: (res: any, error: any) => void): void {

    this.http.get(url, {
        withCredentials: true,
        headers: {
          'content-type': 'application/x-www-form-urlencoded',
        },
        params: params}
      )
      .subscribe(res => {
          callback && callback(res, null);
        }, error => {
          callback && callback(null, error);
        }
      );

  }

  POST(url: string, params: HttpParams, callback ?: (res: any, error: any) => void): void {

    this.http.post(url, params,{
        withCredentials: true,
        headers: {
          'content-type': 'application/x-www-form-urlencoded;charset=UTF-8',
        }
      }).subscribe(res => {
        callback && callback(res, null);
      }, error => {
        callback && callback(null, error);
      });
  }
  alert(message, callback?) {
    if (callback) {
      let alert = this.alertCtrl.create({
        title: '提示',
        message: message,
        buttons: [{
          text: "確定",
          handler: data => {
            callback();
          }
        }]
      });
      alert.present();
    } else {
      let alert = this.alertCtrl.create({
        title: '提示',
        message: message,
        buttons: ["確定"]
      });
      alert.present();
    }
  }

  toast(message, callback?) {
    let toast = this.toastCtrl.create({
      message: message,
      duration: 2000,
      dismissOnPageChange: true,
    });
    toast.present();
    if (callback) {
      callback();
    }
  }

  setItem(key: string, obj: any) {
    try {
      var json = JSON.stringify(obj);
      window.localStorage[key] = json;
    }
    catch (e) {
      console.error("window.localStorage error:" + e);
    }
  }
  getItem(key: string, callback) {
    try {
      var json = window.localStorage[key];
      var obj = JSON.parse(json);
      callback(obj);
    }
    catch (e) {
      console.error("window.localStorage error:" + e);
    }
  }
}

2裸燎、在app.module.ts的prividers中加入此services

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';

import { MyApp } from './app.component';
import {HttpClientModule} from "@angular/common/http";
import {IonicImageViewerModule} from "ionic-img-viewer";
import {AppService} from './app.service';

@NgModule({
  declarations: [
    MyApp
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    IonicImageViewerModule,
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp
  ],
  providers: [
    StatusBar,
    SplashScreen,
    AppService,
    {provide: ErrorHandler, useClass: IonicErrorHandler}
  ]
})
export class AppModule {}

3顾瞻、在需要使用的頁面的ts文件中加入引用,并直接調(diào)用即可顺少。GET請(qǐng)求同理朋其,請(qǐng)自行測(cè)試王浴!

import {AppService} from "../../../app/app.service";
……
 constructor(public alertCtrl: AlertController,private http: HttpClient,private appService:AppService,
              public navCtrl: NavController, public navParams: NavParams) {}
……
   that.appService.POST(url,params,(res, error) => {
                if(res){
                  let result=res['msg'];
                  if(result=='Y'){
                    this.appService.alert("流程已成功處理!");
                    that.navCtrl.pop().then(() => {
                      let msg="Y";
                      this.navParams.get('callback')(msg);
                    });
                  }else{
                    this.appService.alert("流程數(shù)據(jù)異常梅猿,請(qǐng)?jiān)陔娔X端處理氓辣!")
                  }
                }
                if(error){
                  console.log("PUT call in error");
                }
      })
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市袱蚓,隨后出現(xiàn)的幾起案子钞啸,更是在濱河造成了極大的恐慌,老刑警劉巖喇潘,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件体斩,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡颖低,警方通過查閱死者的電腦和手機(jī)絮吵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來忱屑,“玉大人蹬敲,你說我怎么就攤上這事≥航洌” “怎么了伴嗡?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)从铲。 經(jīng)常有香客問我瘪校,道長(zhǎng),這世上最難降的妖魔是什么名段? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任阱扬,我火速辦了婚禮,結(jié)果婚禮上吉嫩,老公的妹妹穿的比我還像新娘价认。我一直安慰自己,他們只是感情好自娩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布用踩。 她就那樣靜靜地躺著,像睡著了一般忙迁。 火紅的嫁衣襯著肌膚如雪脐彩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天姊扔,我揣著相機(jī)與錄音惠奸,去河邊找鬼。 笑死恰梢,一個(gè)胖子當(dāng)著我的面吹牛佛南,可吹牛的內(nèi)容都是我干的丈牢。 我是一名探鬼主播紊遵,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怖亭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼肝箱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绵载,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤埂陆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后娃豹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體焚虱,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年懂版,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鹃栽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躯畴,死狀恐怖谍咆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情私股,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布恩掷,位于F島的核電站倡鲸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏黄娘。R本人自食惡果不足惜峭状,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逼争。 院中可真熱鬧优床,春花似錦、人聲如沸誓焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽杂伟。三九已至移层,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赫粥,已是汗流浹背观话。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留越平,地道東北人频蛔。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓灵迫,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親晦溪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子瀑粥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容