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

per*_*3us 3 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);
    }
};
Run Code Online (Sandbox Code Playgroud)

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

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

请任何人都能指出我正确的方向,让我知道我做的不对.

Nic*_*RIC 6

不确定它是否会起作用,但你可以检查onBackKeyDown函数是否将事件作为第一个参数.如果是,那么尝试以下方法:

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