我使用nav.push()
和nav.pop()
进行常规导航,但是当我不想让用户返回时(例如,在成功登录后设置HomePage),我使用nav.setRoot()
延迟加载。当用户更新其个人资料时,我也会调用setRoot('HomePage')
来刷新页面。
然而,我遇到的问题是HomePage被多次加载。即使我在浏览器中按下刷新按钮,控制台中也会显示更多实例!
我通过app.component.ts中的事件监听器引导所有setRoot调用,以跟踪它被调用的次数,但一切看起来都很正常。我尝试过使用appCtrl.getRootNav().setRoot(page, args)
,但没有任何变化。
知道在哪里看?调用setRoot后,是否必须手动销毁页面或清除导航堆栈?
谢谢!
编辑(部分代码):
在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);
答案 0 :(得分:0)
ionViewWillUnload() {
this.events.unsubscribe("nav:setRoot")
}
这对我有用!