如果使用存储的条件.设置在离子中不起作用



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

中直接使用dashboard.html

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

,但是即使在安装应用程序后的第一次,我也需要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);});
}

请检查我的状况,让我知道需要做什么。

不需要所有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将是无效的,并且它将掉落到您的其他情况下,您的用户将获得访问权限即使没有记录或完全拥有帐户,dashboardpage也会每次仪表板。

因此,如果您不将用户设置为'',那就不要设置它并将其设置为null,那就更好了,那么您可以按照此

进行操作
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");
  });
}

希望这会有所帮助。

相关内容

  • 没有找到相关文章

最新更新