【发布时间】:2018-02-11 01:50:32
【问题描述】:
我使用nav.push() 和nav.pop() 进行常规导航,但是当我不想让用户返回时(例如,在成功登录后设置主页),我使用nav.setRoot()延迟加载。当用户更新他们的个人资料时,我还会调用setRoot('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);
【问题讨论】:
-
Few lines of code is worth a thousand words.你能分享几行代码吗? -
嗨 Sampath,我已经编辑了我的问题以展示我是如何做到的。导航过程实际上并不需要那么多代码。谢谢!
标签: ionic-framework ionic2 ionic3