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

时间:2016-08-18 11:45:50

标签: 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>

TS

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

酥料饼

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

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

ts (MapPage)文件返回root:

  this.nav.insert(0, SearchPage, {
    employeeModel: this.employeeModel
  });

如果我尝试popToRoot(options),则此功能正常,菜单切换按钮正常工作。但是,它不会使用新参数重新加载页面。

有关如何使用参数导航回根页的任何想法吗?

由于

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

  let options = {
    employeeModel: this.employeeModel
  };
  this.nav.popToRoot(options);

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

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

如果我不解雇popover,

    this.nav.push(MapPage, {
      employeeModel: this.employeeModel,
      fromSearch: true
    });

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

这意味着问题与popover有关。

3 个答案:

答案 0 :(得分:1)

解决方案:使用事件处理参数并弹出到root

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

在SearchPage构造函数中:

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

答案 1 :(得分:1)

 import { App } from 'ionic-angular';

constuctor(public app: App) {};

pushSignupPage() {
    this.viewCtrl.dismiss().then(() => {
      this.app.getRootNav().push(SignupPage);
    });
  }

这项工作对我而言。祝你好运

答案 2 :(得分:0)

从地图页面导航回搜索页面

使用:

compile project(':nxpnfcandroidlib')