2015-02-10 59 views
0

我正在为Cordova/PhoneGap开发Android的第一款AngularJS移动应用程序。我在脚本文件中添加了下面的代码,但是我无法捕获backbutton事件。以下是我在我的scripts.js中:AngularJS与科尔多瓦/ PhoneGap无法工作的移动Backbutton

var app = angular.module('QFA', []); 

    app.controller('QFAinit', function($scope, $window) { 

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

      function onDeviceReady() { 

      $window.alert("Device Ready-1"); 
      document.addEventListener("backbutton", onBackKeyDown, false); 
      $window.alert("Device Ready-2"); 

      function onBackKeyDown() { 
       $window.alert("Inside onBackKeyDown1"); 
      } 
     } 
    }); 

我打电话来此如下:

<body ng-controller="QFAinit"> 

当我运行的应用程序我得到“设备就绪-1”和“设备Ready-2“警报。这意味着设备准备好的事件正在被正确触发,并且还尝试了按钮。但是,当我按下后退按钮时,没有任何事情发生,而是执行默认行为,即App退出。

另一方面,如果我用eventlistener命令上的onBackKeyDown()替换onBackKeyDown,那么当应用程序被加载时,紧接在上述两个警报之后,我会得到“Inside onBackKeyDown1”警报。但是一旦应用程序被加载,那么后退功能就不存在了。

有人可以请建议如何使其工作。

非常感谢!

===============更新=================

我已经意识到我需要包括科尔多瓦.js陷阱后台!一旦我补充说明,后退按钮确实被困住了。然而,由于该结果我得到一个破碎的应用程序,如下图所示:

​​

我自己也尝试从2.1改变的jQuery版本1.11,1.10和1.4.5但没有任何影响。事实上,即使我删除了JQuery,我仍然得到了破坏的界面。

+0

方括号是否始终显示或仅当您按下后退按钮时?在你的控制台中有错误,我建议你将安装Eclipse从logcat读取,这样你就可以知道你的应用程序出了什么问题。 – Ricconnect 2015-02-11 07:37:03

+0

他们总是显示,如果我添加cordova.js。当cordova.js被移除时,它们会消失。 Eclipse .....另一个学习练习:-( – Anjum 2015-02-11 07:41:45

回答

0

如果我正确提醒,移动设备上的警报框是异步的。该应用程序可能没有时间显示警报框,因为它已关闭。如果你做了console.log你可以在Eclipse logcat中阅读它吗?或者,如果你做了防止默认应该阻止关闭应用程序:

function onBackKeyDown(event) { 
    event.preventDefault(); 
    $window.alert("Inside onBackKeyDown1"); 
} 
+0

警报必须停止正在运行的所有内容,它曾经与使用PhoneGap + JQueryMobile构建的应用程序的先前版本一起工作,我正在使用AngularJS重新开发相同的应用程序, PhoneGap和它的不工作在这里 我认为preventDefault不再需要与最新的科尔多瓦。但我也试过,也没有任何成功 对不起,我没有使用Eclipse和工作在命令行。以及Ripple Emulator。 – Anjum 2015-02-10 13:30:21

+0

请参阅上面的更新。Thx @Ricconnect – Anjum 2015-02-11 06:16:03

0

以下是终于为我工作,把所有这一部分。尽管它也适用于Body。不是控制器了。

<link rel="stylesheet" href="js/bootstrap.min.css"> 
    <link rel="stylesheet" href="js/bootstrap-theme.min.css"> 

    <script src="js/jquery-1.11.2.min.js"></script> 
    <script src="cordova.js"></script>   

    <script> 
    document.addEventListener("deviceready", onDeviceReady(), false); 

    function onDeviceReady() { 

     document.addEventListener("backbutton", onBackKeyDown, true); 

    } 

    function onBackKeyDown() { 
     alert('Back Button Pressed'); 
     resp = confirm("If you use Home key to exit, the App will remain active. Still want to Quit?"); 
     if (resp === true) { 
      navigator.app.exitApp(); 
     } 
    } 
    </script> 

    <script src="js/angular.min.js"></script> 
    <script src="js/angular-resource.min.js"></script> 
    <script src="js/bootstrap.min.js"></script> 
    <script type="text/javascript" src="app.js"></script> 
相关问题