我正在使用离子3进行该项目。
ionic cordova run android
我使用此命令来运行app。
在此操作中platform.registerBackButtonAction()
工作正常..
但是,如果我使用ionic cordova run android --prod
选项,则platform.registerBackButtonAction ()
无效。
感谢任何帮助。
下面是我处理硬件后退按钮的代码。
this.platform.registerBackButtonAction(() => {
let view = this.nav.getActive();
if(view.component.name == "NonetworkPage"){
if (!this.showedAlert) {
this.confirmExitApp();
} else {
this.showedAlert = false;
this.confirmAlert.dismiss();
}
}else{
if (view.component.name == "HomePage") {
if (!this.showedAlert) {
this.confirmExitApp();
} else {
this.showedAlert = false;
this.confirmAlert.dismiss();
}
} else if (view.component.name != "HomePage" && view.component.name != "LoginPage") {
if (this.nav.length() == 1) {
this.nav.setRoot(HomePage);
} else if (this.nav.length() > 1) {
this.nav.pop();
}
} else if (view.component.name == "LoginPage") {
this.confirmExitApp();
}
}
});
以下是确认退出弹出窗口
confirmExitApp() {
this.showedAlert = true;
this.confirmAlert = this.alertCtrl.create({
title: "Exit App?",
message: "Are you sure you want to exit App?",
enableBackdropDismiss: true,
cssClass: 'confirmCustomCss',
buttons: [
{
text: 'No',
handler: () => {
this.showedAlert = false;
return;
}
},
{
text: 'Yes',
handler: () => {
this.platform.exitApp();
}
}
]
});
this.confirmAlert.present();
}
答案 0 :(得分:1)
因为prod标志缩小了我们的代码并且还混淆了页面名称,但你可以通过使用这个代码解决这个问题,希望它可以帮助你,它将在build -prod和build上运行
platform.registerBackButtonAction(() => {
let view = this.navCtrl.getActive();
let page = view ? this.navCtrl.getActive().instance : null;
if (page && (page instanceof Mypage)
不要忘记将Mypage导入app.component.ts
答案 1 :(得分:1)
this.platform.registerBackButtonAction(() => {
let view = this.nav.getActive();
let currentRootPage = view.component;
if(currentRootPage == MyPage)
});
对我有用。
答案 2 :(得分:0)
在离子3中,这给出了当前页面的名称:
const currentActivePage = this.nav.getActive().id;
它可以与
进行比较if(currentActivePage == 'LoginPage')