简要说明正在发生的事情:当我在移动设备上打开应用时,它会直接从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);});
}
请检查我的条件,并告诉我需要做什么。
感谢您的时间。
答案 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");
});
}
希望这有帮助。