我的应用程序导航是这样的:
- 登录页面(设置为 Root)
- TabsPage(设置为Root,登录成功后)
- ListPage(离子标签根)
- FilterPage(以模式打开)
- DetailsPage(页面被推送)
- SearchPage(离子标签根)
- SettingsPage(离子标签根)
- 历史(页面被推送)
- HistoryDetailsPage(页面被推送)
- 历史(页面被推送)
- ListPage(离子标签根)
问题有点像这个问题。但这对我没有帮助。
问题:
每当我从推送的页面或 ion-tab 根页面按下硬件后退按钮时,我只会在 app.component.ts 的后退按钮事件中看到 nav.getViews() 的 ["TabsPage"]。如何在该全局后退按钮事件中获取 Pushed Page 的名称?
参考代码:
app.component.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();
}
}
}