Phonegap + AngularJS - 后退按钮行为

时间:2015-08-04 19:24:26

标签: javascript android angularjs cordova phonegap-plugins

我一直试图在我的AngularJS应用程序中覆盖Android的后退按钮几个小时,我就是不能这样做。我已经能够让后退按钮停止工作,但我不能让它回去甚至让它进入主页。我没有使用路线 - 相反,我只是简单地切换页面,所以我甚至不确定是否可以返回。如果我可以去主页它会很棒。这是我的代码:

  var onDeviceReady = function(){
   document.addEventListener("backbutton", handleDeviceBackButton, false);
}
function handleDeviceBackButton(){
  angular.element('[ng-controller=AppCtrl]').scope().goHome();
  menu.setMainPage('home.html', {closeMenu: true});
}

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

1 个答案:

答案 0 :(得分:0)

如果您只想回去使用

$window.history.back();

但是,我建议您使用ui-router之类的路由解决方案。使用$ state,导航更简单:

$state.go('home');

您可以依赖浏览器后退按钮,而不是通过PhoneGap添加事件侦听器。您的应用是一个网页,因此在Android上触发后退按钮将返回到您的history state。避免设备事件允许您直接在桌面浏览器中调试代码。

如果您想阻止特定的后退状态或进行重定向,您可以使用:

$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {
   if (from.name == "splashscreen" && to.name =="home"){
     //redirect using navigation $state service
   }
});