2015-10-19 169 views
0

我試圖覆蓋硬件後退按鈕功能。 因此,下面的代碼一切正常。硬件後退按鈕不起作用?

但是,在我的應用程序中有兩個$ ionicModal。當$ ionicModal打開和關閉。硬件後退按鈕停止工作,應用程序無法關閉後退按鈕? 甚至沒有$ ionicPlatform.registerBackButtonAction函數被調用。

$state.$current.name == ""; 
var backbutton=0; 
    $ionicPlatform.registerBackButtonAction(function (event) { 

     if (($state.$current.name == "app.intro") || 
      ($state.$current.name == "app.main.home") || 
      ($state.$current.name == "app.account") || 
      ($state.$current.name == "app.myBusiness")|| 
      ($state.$current.name == "app.support")|| 
      ($state.$current.name == "app.noConnection")) { 
      if(backbutton==0){ 
       backbutton++; 
       window.plugins.toast.showLongBottom('Press again to exit'); 
       $timeout(function(){backbutton=0;},3000); 
      }else{ 
       navigator.app.exitApp(); 
       } 
      console.log("one"); 
     }else if($state.$current.name == "app.welcome.takeControl") { 
      console.log("two"); 
       $state.go("app.main.home"); 
     }else{ 
      console.log("three"); 
       navigator.app.backHistory(); 
       } 
    }, 100); 

謝謝。

回答

2

首先檢查其打開適當去除越來越離子態實例是否都沒有。如果您打開兩次相同的模式實例但僅關閉一次,則可能會發生後退按鈕問題。所以一個模態的實例可能還沒有清理。

在這種情況下,硬件後退按鈕將嘗試關閉每次都未清理的模式,而不是轉到上一個視圖。由於'消除模態'具有比'返回到先前視圖'(100)更高的優先級(200)。

用於registerBackButtonAction優先級如下:

  • 返回前一視圖= 100
  • 關閉側菜單= 150
  • 辭退模態= 200
  • 關閉動作片= 300
  • Dismiss popup = 400
  • Dismiss loading overlay = 500

To know more about $ionicModal

To know more about $ionicPlatform.registerBackButtonAction

+0

很好的解釋..!它做..!我是開相同的離子態兩次..!閉只一次..! –