【问题标题】:Global Variable and how pass the value in IONIC3全局变量以及如何在 IONIC3 中传递值
【发布时间】:2017-10-17 15:39:59
【问题描述】:

我认为我的问题很简单,但我肯定有什么过不去的地方。

我需要在登录后将 HTTP 请求的令牌放入全局变量中。 在我的登录页面中,HTTP 获取返回一个对象,其中包含:HTTP 代码(200,403,403)、消息(“成功”)和令牌,我将此对象传递给 HOME.ts 页面真正的导航控制器。

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 中来管理?

【问题讨论】:

    标签: javascript angular http typescript ionic3


    【解决方案1】:

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

    无论如何:不要污染全局范围。也许你可以使用类似的东西来做到这一点

    window.token = 'the token'
    

    但这不是一个好主意。

    【讨论】:

    • 是的,伙计,我知道如何解决我的问题...我遵循您的建议,现在我提供了共享服务!谢谢大哥!
    猜你喜欢
    • 2018-03-16
    • 2014-05-14
    • 1970-01-01
    • 2015-08-31
    • 2013-07-16
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多