如果使用storage.set的条件不起作用 - IONIC

时间:2017-11-30 13:18:31

标签: ionic-framework ionic2

简要说明正在发生的事情:当我在移动设备上打开应用时,它会直接从dashboard.html

转到login.html

我想要实现的目标:当应用程序第一次打开时,在提供用户名和密码后,成功响应用户名和密码信息将保存在本地存储中。从下次应用程序打开时,应用程序转到login.html,在其ngOnInit()中检查用户是否已登录,然后导航到'dashboard.html else stays at login.html`页面。

  

但即使是在安装应用后的第一次,我也需要dashboard.html。我做错了什么?

login.ts代码:

  ngOnInit()
{

if(this.storage.get('user').then((val) => {
  if(val===''){
    console.log("this key does not exists");
    this.storage.set('user','');
  }
  else {
    this.navCtrl.setRoot(DashboardPage);
    console.log('user::',val);
  }

    console.log("i am out of if");

 }))
 {

 }
{console.log('user',val);});
}

请检查我的条件,并告诉我需要做什么。

  

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您的所有storage.get代码都不需要在if语句中,它甚至不可能(据我所知,也许你返回一个布尔值),你只需要这个

ngOnInit(){
  this.storage.get('user').then((val) => {
    if (val === '') {
      console.log("this key does not exists");
      this.storage.set('user', '');
    } else {
      this.navCtrl.setRoot(DashboardPage);
      console.log('user::', val);
    }
    console.log("i am out of if");
  });
}

此外,您第一次打开应用时,您需要将用户设置为'',如果您不这样做,val将为空,并且&#39 ;即使没有记录或拥有帐户,您也会落入您的其他人,并且您的用户每次都可以访问DashboardPage。

因此,如果您不将用户设置为''会更好,只是不要设置它并将其保留为空,那么您可以这样做

ngOnInit(){
  this.storage.get('user').then((val) => {
    if (val) {
      this.navCtrl.setRoot(DashboardPage);
      console.log('user::', val);
    } else {
      console.log("this key does not exists");
    }
    console.log("i am out of if");
  });
}

希望这有帮助。