我使用nav.push()
和nav.pop()
進行常規導航,但是當我不想讓用戶返回時(例如,在成功登錄後設置主頁) ,我用延遲加載使用nav.setRoot()
。我還打電話setRoot('HomePage')
刷新頁面,當用戶更新他們的個人資料。Ionic setRoot讓多個實例同時運行
但是,我遇到的問題是HomePage幾次加載。即使當我按下瀏覽器中的刷新按鈕時,控制檯中也會顯示更多實例!
我已通過app.component.ts中的事件偵聽器傳遞所有setRoot調用以跟蹤它被調用的次數,但一切看起來都正常。我試過使用appCtrl.getRootNav().setRoot(page, args)
,但沒有任何變化。
任何想法在哪裏看?在調用setRoot之後,我是否必須手動銷燬頁面或清除導航堆棧?
謝謝!
EDIT(一些代碼):
訂閱setRoot事件app.component.ts:
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);
'幾行代碼勝過千言萬語。你能分享幾行代碼嗎? – Sampath
嗨Sampath,我編輯了我的問題來展示我如何做。導航過程並不真的需要那麼多的代碼。謝謝! – emiliosg