2015-12-22 170 views
0

我是使用AngularJs和PhoneGap的應用程序開發新手,所以我可能在這裏做錯了什麼(請糾正)。我的目標是在/ viewInitialDepartments處於活動狀態時(即用戶處於該視圖中時)任何人在Android中按下BackButton時退出App。相關代碼如下: -應用程序退出無法按下Android應用程序中的後退按鈕(Phonegap&AngularJS)

的index.html頁: -

<!DOCTYPE html> 
<html> 
<meta name="viewport" content="width=device-width,height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" > 
<meta http-equiv="x-ua-compatible" content="ie=10"> 
<meta name="msapplication-tap-highlight" content="no" > 
<link rel="stylesheet" href="css/module-reset.css" ><link rel="stylesheet" href="css/module-grid.css" ><link rel="stylesheet" href="css/module-all.css" ><link rel="stylesheet" href="css/module-transitions.css"><link rel="stylesheet" href="css/module-custom.css" > <link rel="stylesheet" href="css/styleMenu.min.css"> 
<title>ad</title> 
<script type="text/javascript" src="cordova.js"></script> 
</head> 
<body ng-cloak ng-app="askDadaApp"> 

<div id="mainBodyWrapper"> 
<div class="page {{ pageClass }}" ng-view></div> 
</div> 
<script src="js/angular.min.js"></script> 
<script src="js/angular-route.js"></script> 
<script src="js/angular-animate.js"></script> 
<script src="js/angular-touch.js"></script> 
<script src="js/ngprogress.min.js"></script> 
<link rel="stylesheet" href="css/ngProgress.css" > 
<script src="js/script-controller.js"></script> 
</body> 
</html> 

我的角度JS控逆變頁(腳本controller.js): -

var adApp = angular.module('adApp',['ngRoute', 'ngAnimate','ngTouch','ngProgress']); 
adApp.config(function($routeProvider, $locationProvider) { 

$routeProvider 
.when('/', {templateUrl: 'views/1-setconnection.html',controller: 'setController' }) 
.when('/viewInitialDepartments', {templateUrl: 'views/2-viewInitialDepartments.html',controller: 'viewInitialDepartmentsController' }) 
.when('/offLine', { templateUrl: 'views/1-offLine.html',controller:'offLineController'}) 
}); 
// CONTROLLERS 
adApp.controller('offLineController', function($scope, $http, $location, $routeParams) { $scope.pageClass = 'normal';var notOnlineToast = document.getElementById("notOnlineToast");notOnlineToast.style.display="block"; 
}); 
adApp.controller('setController', function($scope, $http, $location) { 
var typeList = "CHECKCONNECTION"; 
$http.get("URL/php/fetchData.php?typeList=" + typeList) 
.error(function(response) {$location.path('/offLine'); 
// if not offline then go to Home View (viewInitialDepartments) 
$location.path('/viewInitialDepartments'); 
}); 
adApp.controller('viewInitialDepartmentsController', function($scope, $http, $location, $routeParams) { 
var typeList = "CHECKCONNECTION"; 
$http.get("URL/php/fetchData.php?typeList=" + typeList) 
.error(function(response) { 
$location.path('/offLine'); 
}); 
// REST OF THE CODE 
}); 

我的config.xml文件有聲明:-gap:plugin name =「org.apache.cordova.dialogs」

現在的事情是,我需要知道如何讓用戶在/ viewInitialDepartments視圖中按下Android手機上的BackButton時退出App。 請幫忙。 (其他一切正常工作正常。)

編輯 - 我想這可以通過使用document.addEventListener(「deviceready」,onDeviceReady,false)來實現。和document.addEventListener(「backbutton」),但不知道如何在我現在的代碼中這樣做,以便backButton完成它對所有其他視圖的作用,並僅在in/viewInitialDepartments視圖中關閉應用程序。

回答

0

定義全局變量來保存當前的路線(圖)名稱

var CURRENT_ROUTE; 

值分配給CURRENT_ROUTE的路線改變

var adApp = angular.module('adApp',['ngRoute', 'ngAnimate','ngTouch','ngProgress']).run([ 
    '$rootScope', 
    function ($rootScope) { 
     $rootScope.$on('$routeChangeStart', function (event, next) { 
      CURRENT_ROUTE = next; 
     }); 
    }]); 

上後退按鈕執行操作

document.addEventListener("backbutton", function(){ 
    if(CURRENT_ROUTE === yourviewname){ 
     navigator.app.exitApp(); // exit app 
    } 
}, false); 
+0

但是,這是適用於所有視圖,我只需要應用程序退出,當它只在/ viewInitialDepartments視圖中。這意味着退出App的代碼應該在viewInitialDepartmentsController控制器中。請提前提供此解決方案。 –

+0

document.addEventListener( 「後退按鈕」,函數(){ 如果(CURRENT_ROUTE === 'viewInitialDepartments'){ navigator.app.exitApp(); //退出應用 } },假);這就是你所需要的 –

相關問題