build.prister

时间:2018-06-01 06:43:38

标签: ionic-framework ionic2 ionic3 ionic-native

我正在使用离子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();
  }

3 个答案:

答案 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')