离子 3 - 注册后退按钮操作 - 无法获取活动的推送页面



我的应用程序导航如下:

  • 登录页面(设置为根(
  • TabsPage(设置为Root,一旦登录成功(
    • ListPage(离子选项卡根目录(
      • FilterPage(以模态打开(
      • DetailsPage(推送页面(
    • SearchPage(离子选项卡根目录(
    • 设置页面(离子选项卡根目录(
      • 历史记录(页面被推送(
        • 历史细节页面(推送页面(

问题和这个问题差不多。但这对我没有帮助。

问题:

每当我从pushed Pages或ion选项卡根页面中按下硬件后退按钮时,我在app.component.ts的后退按钮事件中只看到nav.getViews((的[quot;TabsPage"]。如何在全局后退按钮事件下获得pushed Page的名称?

参考代码:

应用程序组件.ts:

constructor(..., private platform: Platform,private modalCtrl: ModalController,private ionicApp: IonicApp,private app: App, ...) {
// ...
this.registerAction();
}
registerAction(): void {
if (this.platform.is("android")) {
this.unRegisterBackButtonAction = this.platform.registerBackButtonAction(
(event) => {
this.backButtonClick();
}
);
}
}
backButtonClick() {
let views = this.nav.getViews().map(x => x.name);
console.log(JSON.stringify(views));  // ALWAYS SHOWS ["TabsPage"], not the actual page (eg: "DetailsPage")
let activePortal = this.ionicApp._loadingPortal.getActive() || 
this.ionicApp._modalPortal.getActive() || 
this.ionicApp._overlayPortal.getActive();
if (activePortal) {
activePortal.dismiss();
}
else if(this.nav.canGoBack()) {
this.nav.pop();
} else {
if (new Date().getTime() - this.lastTimeBackPress < this.timePeriodToExit) {
this.platform.exitApp(); //Exit from app
} else {
this.alerts.showToast("Press back button again to exit");
this.lastTimeBackPress = new Date().getTime();
}
}
}

您将无法获得页面的名称。

registerBackButtonAction不返回页面的名称,而是返回实例。因此,如果你想找到这个页面,你必须在app.component.ts&然后将其与返回的值进行比较。

我还建议不要使用依赖于页面名称的代码,因为这些名称将在生产构建中丢失。当代码在生产版本中被缩小时,名称也会被缩小,例如,名称主页将变为a。这将导致代码在生产中中断。

相关内容

  • 没有找到相关文章

最新更新