全局变量以及如何通过IONIC3中的值

时间:2017-10-17 15:40:00

标签: javascript angular http typescript ionic3

我认为我的问题非常简单,但我确实无法通过我。

我需要在登录后在全局变量中为HTTP请求放置一个TOKEN。 在我的登录页面中,HTTP get,返回一个对象:HTTP代码(200,403,403),一条消息("成功")和TOKEN,我将此对象传递给HOME.ts页面为真的NavController 。

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

但是当我试图把这个回归&#34;数据&#34;在&#34;登录&#34;

类型的对象中
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 信息 : &#34;欢迎管理员 - 这是您的令牌(由之前的电话生成)&#34; 代币 : &#34; 676f71bab54dad7589c3d1b6b5f5b24de0f8c484&#34; 的 : 宾语 的 : 对象

结果3:

未定义

为什么我无法将此返回信息放入对象登录管理?

1 个答案:

答案 0 :(得分:0)

不要使用全局变量。 您可以使用shared service(创建注入组件的服务,使用方法存储令牌,另一个读取存储值)或将其存储在某种存储中(像Ionic Storage)或甚至(和更复杂的)使用一些状态容器,如Redux。

无论如何:不要污染全球范围。也许你可以用

之类的东西来做这件事
window.token = 'the token'

但这不是一个好的意识形态。

相关问题