Ionic setRoot使多个实例同时运行

时间:2017-09-02 01:30:19

标签: ionic-framework ionic2 ionic3

我使用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);

1 个答案:

答案 0 :(得分:0)

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

这对我有用!