如何使硬件后退按钮成为退出应用程序

时间:2016-03-05 07:28:54

标签: javascript angularjs cordova

我找到了这个代码,但它的javascript:

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady(){
    document.addEventListener("backbutton", function(e){
       if($.mobile.activePage.is('#homepage')){
           e.preventDefault();
           navigator.app.exitApp();
       }
       else {
           navigator.app.backHistory()
       }
    }, false);
}

这种情况就像我的情况一样,我想让后退按钮成为我的应用程序在某个页面(在这种情况下是/ home)的退出方式,但这段代码是用javascript编写的,我想做这个在angularjs中,我该如何写呢?感谢

2 个答案:

答案 0 :(得分:1)

Angular是JavaScript。此代码无需修改即可使用角度,您只需将其添加到您的应用程序即可。

答案 1 :(得分:0)

这是使用 Angular ui-router framework 的插图示例代码,现在是标准:

  

阅读代码注释以便更好地理解。请根据您的需要修改以下内容。只有在加载cordova库时才需要调用退出代码。因此,在deviceready事件回调中调用角度初始化代码。

示例HTML代码:

<!DOCTYPE html>
<html>
    <head>      
    <script src="angular.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="angular-ui-router.js" type="text/javascript" charset="utf-8"></script>
    </head>
    <body ng-app="myApp">
        <div ui-view></div>
        <script src="app.js" type="text/javascript" charset="utf-8"></script>
    </body>
</html>

JS代码示例:在cordready加载到deviceready之后调用

angular.module('myApp', ['ui.router'])
.config(['$stateProvider', '$urlRouterProvider' , function ($stateProvider, $urlRouterProvider) {
    $urlRouterProvider.otherwise("/page1")
    $stateProvider
    .state('page1', {             
          url: "/page1",
          template: '<div><div>{{topmsg}}</div><a  ui-sref="page2">Middle</a></div>',
          controller: function ($scope) {
            $scope.topmsg = "loaded top!";
            console.log("Page 1");
          }
    })

    .state('page2', {             
          url: "/page2",
          template: '<div>{{topmsg}}</div>',
          controller: function ($scope) {
            $scope.topmsg = "Pages 2";
            console.log("Page 2");
          }
    });        
}])

.run(function($rootScope, $state){
    $rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams, options){
        console.log("state - "+ toState.name);
            //debugger;
        if(toState.name == "page2"){
            //Add Your closing code here
            //navigator.app.exitApp();
        }       
    }); 
});

<强>阐释:

我创建了两个页面。只是为了说明导航到第二页,我正在通过调用navigator.app.exitApp()关闭应用程序。

请参阅此documentation以获取舞台更改活动中可用的参数。

注意:如果您从代码中退出应用,iOS Appstore会拒绝您的应用。