簡體   English   中英

全局變量以及如何在IONIC3中傳遞值

[英]Global Variable and how pass the value in IONIC3

我認為我的問題很簡單,但我的確可以接受。

登錄后,我需要將HTTP請求的令牌放在全局變量中。 在我的登錄頁面中,HTTP get返回一個帶有以下內容的對象:HTTP代碼(200,403,403),一個Message(“ Success”)和TOKEN,然后將該對象傳遞給HOME.ts頁面,即NavController。

this.navCtrl.setRoot(HomePage,{
    data   <<--- Object                        
  });

但是,當我嘗試將此返回“數據”放入“登錄”類型的對象中時

export class Login {

code:number;
token:string;
message:string;

constructor(code?:number, token?:string, message?:string){
    this.code = code;
    this.token = token;
    this.message = message;

}

}

要將屬性Login.token放在全局變量內,則什么也沒有發生。

我做了一些測試,這就是我所知道的。

在HOME.ts中,我放置了一些console.log,以了解發生了什么。

 console.log(this.navParams.data.data); ----> RESULT 1

console.log(this.navParams.get("data"));    ----> RESULT 2

this.dadosRest = this.navParams.get("data");

console.log(this.dadosRest);  ----> RESULT 3

console.log(this.dadosRest.token); -----> RESULT 4

結果1、2和3:

{success: {…}}

成功:代碼:200消息:“歡迎管理員-這是您的令牌(由上一個調用生成)”令牌:“ 676f71bab54dad7589c3d1b6b5f5b24de0f8c484” 原型 :對象原型 :對象

結果3:

未定義

為什么我不能將此返回值放到Login對象中進行管理?

不要使用全局變量。 您既可以使用共享服務 (創建要在組件中注入的服務,又可以使用一種方法在其中存儲令牌並使用另一種方法來讀取存儲的值)或將其存儲在某種類型的存儲中(例如Ionic) Storage )甚至(更復雜)使用某些狀態容器,例如Redux。

無論如何:不要污染全球范圍。 也許您可以使用類似的方法

window.token = 'the token'

但這不是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM