2017-09-02 6 views
0

通常のナビゲーションにはnav.push()nav.pop()を使用しますが、ログインを成功させた後にHomePageを設定するなど、私は遅延ロードでnav.setRoot()を使用します。また、ユーザーがプロフィールを更新したときにページを更新するようにsetRoot('HomePage')と呼んでいます。Ionic setRootは複数のインスタンスを同時に実行しています

しかし、私が経験している問題は、HomePageが何度もロードされているということです。ブラウザの更新ボタンを押しても、コンソールにさらに多くのインスタンスが表示されます。

私はapp.component.tsのイベントリスナーを介してすべてのsetRoot呼び出しを呼び出して、呼び出された回数を記録していますが、すべて正常です。私はappCtrl.getRootNav().setRoot(page, args)を使ってみましたが、何も変わりません。

見た目はどこですか? setRootを呼び出した後、手動でページを破棄するか、ナビゲーションスタックをクリアする必要がありますか?

ありがとうございます!

EDIT(いくつかのコード):app.component.tsでsetRootイベントに

サブスクリプション:

this.events.subscribe('nav:setRoot', (data) => { 
    let page = data['page']; 
    let args = data['data']; 
    if(args !== null && args !== 'undefined'){ 
    this.appCtrl.getRootNav().setRoot(page, args); 
    }else{ 
    this.appCtrl.getRootNav().setRoot(page); 
    } 
}); 

私は新しいルート・ページを設定したい任意のページから、

let arg = { page: 'HomePage'}; 
this.events.publish('nav:setRoot', arg); 
+2

コードの数行は数千語に相当します。コードの数行を共有できますか? – Sampath

+0

こんにちはサンパス、私は私がそれをやっている方法を示すために私の質問を編集しました。ナビゲーションプロセスでは、それほど多くのコードは必要ありません。ありがとう! – emiliosg

答えて

0
ionViewWillUnload() { 
    this.events.unsubscribe("nav:setRoot") 
} 

これは私のために働いた!

+0

このコードスニペットをご利用いただきありがとうございます。なぜこれが問題の良い解決策であるのかを示すことによって、長期的価値を適切に説明すると([https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers])将来の読者にとっては、他の同様の質問をするとより有用になります。あなたの前提を含め、あなたの答えを編集していくつかの説明を加えてください –

関連する問題