导航回root - 菜单切换按钮坏了

Ric*_*ard 8 javascript angularjs typescript ionic-framework ionic2

我正在使用Ionic 2.

第1页(SearchPage) - > popover - >第2页(MapPage) - >第1页(SearchPage)(menuToggle not working)

我有一个根页面(SearchPage):

HTML

<ion-header>
  <ion-navbar>
    <button menuToggle>
      <ion-icon name="menu"></ion-icon>
    </button>
  </ion-navbar>
</ion-header>
Run Code Online (Sandbox Code Playgroud)

TS

  presentPopover(event: Event): void {
    let popover: Popover = this.popoverController.create(SearchPopOverPage, {
      ev: event,
      employeeModel: this.employeeModel
    });
    popover.present();
  }
Run Code Online (Sandbox Code Playgroud)

酥料饼

  presentFilterMap(event: Event) {
    this.viewCtrl.dismiss().then(() => {
      this.nav.push(MapPage, {
        ev: event,
        employeeModel: this.employeeModel,
        fromSearch: true
      })
    });
  }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试返回根页面(带参数)时,它会显示菜单切换按钮(3行),但是当我点击它时它不起作用(即什么都不做,它应该显示侧面菜单).

返回root的ts(MapPage)文件:

  this.nav.insert(0, SearchPage, {
    employeeModel: this.employeeModel
  });
Run Code Online (Sandbox Code Playgroud)

如果我尝试popToRoot(options),这可以工作,菜单切换按钮正在工作.但是,它不会使用新参数重新加载页面.

有什么想法我应该如何导航回带有参数的根页面?

谢谢

更新:我尝试了以下内容,但它没有回到根目录:

  let options = {
    employeeModel: this.employeeModel
  };
  this.nav.popToRoot(options);
Run Code Online (Sandbox Code Playgroud)

更新:我也尝试将弹出窗口调用更改为下一页,但收效甚微.现在MapPage上的后退按钮可以工作,但是当我转到根页面时,menuToggle仍然没有响应点击.

  presentFilterMap(event: Event) {
    this.nav.push(MapPage, {
      employeeModel: this.employeeModel,
      fromSearch: true
    }).then(() => {
      this.viewCtrl.dismiss();
    });
  }
Run Code Online (Sandbox Code Playgroud)

如果我不解雇popover,

    this.nav.push(MapPage, {
      employeeModel: this.employeeModel,
      fromSearch: true
    });
Run Code Online (Sandbox Code Playgroud)

然后当我使用MapPage上的后退按钮返回root时,popover仍然存在,并且menuToggle按预期工作.但是,如果我宁愿导航回根页面(我需要这样做),那么弹出窗口就不存在了,而且menuToggle没有响应.

这意味着问题与popover有关.

Ric*_*ard 1

解决方案:使用事件来处理参数并弹出到根目录

 let data = {
    eModel: this.eModel
  };
events.publish('employee:update', data);
this.nav.popToRoot();
Run Code Online (Sandbox Code Playgroud)

在您的 SearchPage 构造函数中:

events.subscribe('employee:update', (data) => {
//do whatever you need to do with your data:
  let EModel = data[0].eModel;
});
Run Code Online (Sandbox Code Playgroud)