【问题标题】:Overriding back button in android - Phonegap Angularjs覆盖android中的后退按钮 - Phonegap Angularjs
【发布时间】:2013-09-05 12:48:56
【问题描述】:

我有以下作为我的 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 中看到日志。

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

请任何人指出我正确的方向,并让我知道我做错了什么。

【问题讨论】:

  • 只需将一个类添加到您的后退按钮并跟踪...

标签: angularjs cordova


【解决方案1】:

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

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

【讨论】:

  • 我确实尝试过 evt.preventDefault() 但它没有用。我也会添加 stopPropagation。让我们看看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多