2017-11-30 6 views
0

何が起こっているかを簡単に説明する:私は携帯電話でアプリを開くと、それが直接私が達成しようとしています何storage.setを使用して条件が動作しない場合 - IONIC

login.htmlからdashboard.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

すべての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はnullになり、それがあなたの他のユーザーになり、ユーザーは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"); 
    }); 
} 

として行うことができ、それを設定し、nullにするためにそれを残していない、''としてユーザーを設定していないのであれば、それは良いでしょうが、これがお役に立てば幸いです。

+0

大丈夫です。 – user2828442

+0

をログアウトしてログアウトしたときに、 'OnInit'で' this.storage.set( 'user'、 ''); 'を渡しました。これは正しい方法ですか?私は別の何かをするべきですか? – user2828442

+0

ユーザがログアウトすると、ストレージを消去できます。 'user'をヌルに設定するか、' this.storage.remove( 'user') 'で' user'を削除します。 –

関連する問題