2016-11-14 52 views
0

我試圖做到這一點:改回按鈕(機器人)的行爲,當彈出窗口被激活,離子

方案1

    • 用戶按後退。
    • 彈出窗口,詢問用戶是否要退出*
    • 用戶按後退。
    • 應用程序退出*

方案2

  1. 用戶按回。

    • 彈出窗口,詢問用戶是否要退出*
    • 用戶按下取消
    • 彈出關閉
    • 用戶按回。
    • 彈出窗口,詢問用戶是否要退出*
    • 用戶按回
    • 應用程序退出。

我嘗試使用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); 
+0

我沒有處理類似http://stackoverflow.com/questions/40283209/cordova-back-button-fires無論如何/ 40283618#40283618但沒有確認彈出框 – Naitik

回答

1

我做亨德爾有以下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); 

OR你可以試試烤麪包什麼的,我更喜歡用這一個,

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); 

謝謝

+0

您在彈出框中添加了一個'return',然後是function-> then-> else part,它仍然退出了場景2中的應用程序。 – distante

+0

嘗試我的**或**部分答案沒有任何功能,javascript它自己處理後面的按鈕調用在上面的函數, – Naitik

+0

約'返回'仍然存在於情況2,因爲我認爲它調用你的代碼'$ ionicPlatform.onHardwareBackButton(function (event2){ navigator.app.exitApp(); });' – Naitik