覆盖android中的后退按钮 - Phonegap Angularjs

时间:2013-09-05 12:48:56

标签: angularjs cordova

我跟随我的index.js(用于初始化phonegap)

 function onBackKeyDown() {
     angular.element('[ng-controller=NavCtrl]').scope().back();
 }


var app = {
// Application Constructor
     initialize: function() {
         this.bindEvents();
     },

     // Bind any events that are required on startup. Common events are:
     // 'load', 'deviceready', 'offline', and 'online'.
     bindEvents: function() {
        document.addEventListener('load', this.onLoad, false);
        document.addEventListener('deviceready', this.onDeviceReady, false);
        window.addEventListener("orientationchange", orientationChange, true);
     },
     onLoad: function() {

     },


    onDeviceReady: function() {
        document.addEventListener("backbutton", onBackKeyDown, false);
    }
};

当按下后退按钮时,这应该在技术上运行onBackKeyDown函数。我可以在logcat中看到日志。

这根据文档应该覆盖默认行为,但显然当我单击后退按钮时,它不仅会触发该函数,还会执行默认行为。 我被带回到我的登录界面,而所描述的行为则是别的。

任何人都可以指出我正确的方向,让我知道我做的不对。

1 个答案:

答案 0 :(得分:6)

不确定它是否能解决这个问题,但你可以检查onBackKeyDown函数是否将事件作为第一个参数。如果是,那么尝试类似:

function onBackKeyDown(evt) {
  evt.preventDefault();
  evt.stopPropagation();
  angular.element('[ng-controller=NavCtrl]').scope().back();
 }