当Popup处于活动状态时,更改后退按钮(android)行为,离子

时间:2016-11-14 16:32:13

标签: angularjs ionic-framework

我正在努力实现这个目标:

情景1

    • 用户按下。
    • 弹出窗口询问用户是否要退出*
    • 用户按下。
    • App退出*
  1. 场景2

    1. 用户按下。

      • 弹出窗口询问用户是否要退出*
      • 用户按取消
      • 弹出窗口关闭
      • 用户按下。
      • 弹出窗口询问用户是否要退出*
      • 用户按下
      • App退出。
    2. 我尝试使用registerBackButtonActiononHardwareBackButton组合,但我无法让退出弹出窗口显示第二次(第二种情况),它只是退出。

      这是我现在的代码:

       var exitPopupControl = function(event) {
                  //if I press back again, just go out
                  $ionicPlatform.onHardwareBackButton(function(event2){
                      navigator.app.exitApp();
                  });
      
                if($state.current.name === "app.startseite"){
                      $ionicPopup.confirm({
                          title: 'Exit',
                          template: 'Do you want to exit? <br /><small>Press Back again to exit.</small>'
                      }).then(function(res) {
                          if(res) {
                              navigator.app.exitApp();
                              $rootScope.exitPopupShowed = false;
      
                          } else {
                              console.log('I choose not to left the app');
                              $ionicPlatform.registerBackButtonAction(exitPopupControl, 100);
                          }
                      });
                  }
                  else {
                      window.history.back();
                  }
              };
      
          $ionicPlatform.registerBackButtonAction(exitPopupControl, 100);
      

1 个答案:

答案 0 :(得分:1)

我做了handel跟随wa - 只是更改确认弹出代码,

var exitPopupControl = function(event) {
            //if I press back again, just go out
            $ionicPlatform.onHardwareBackButton(function(event2){
                navigator.app.exitApp();
            });

          if($state.current.name === "app.startseite"){
                $ionicPopup.confirm({
                    title: 'Exit',
                    template: 'Do you want to exit? <br /><small>Press Back again to exit.</small>'
                }).then(function(res) {
                    if(res) {

                        $rootScope.exitPopupShowed = false;
                        navigator.app.exitApp();

                    } else {
                        return;
                    }
                });
            }
            else {
                window.history.back();
            }
        };

    $ionicPlatform.registerBackButtonAction(exitPopupControl, 100);

OR 您可以尝试以下方法:

document.addEventListener("deviceready", function() {
    document.addEventListener("backbutton", function(e) {
       $ionicPopup.confirm({
            title: 'Exit',
            template: 'Do you want to exit? <br /><small>Press Back again to exit.</small>'
        }).then(function(res) {
            if(res) {

                $rootScope.exitPopupShowed = false;
                navigator.app.exitApp();

            } else {
                return;
            }
        });
    }, false);
}, false);

你可以试试烤面包,我更喜欢用这个,

var countTimerForCloseApp = false;
$ionicPlatform.registerBackButtonAction(function(e) {
 e.preventDefault();
 function showConfirm() {
  if (countTimerForCloseApp) {
   ionic.Platform.exitApp();
  } else {
   countTimerForCloseApp = true;
   showToastMsg($cordovaToast, 'Press again to exit.');
   $timeout(function() {
    countTimerForCloseApp = false;
   }, 2000);
  }

 };

 // Is there a page to go back to?
 if ($ionicHistory.backView()) {
  // Go back in history
  $ionicHistory.backView().go();
 } else {
  // This is the last page: Show confirmation popup
  showConfirm();
 }

 return false;
}, 101);

谢谢