【问题标题】:Phonegap + AngularJS - back button behaviorPhonegap + AngularJS - 后退按钮行为
【发布时间】:2015-08-04 19:24:26
【问题描述】:

几个小时以来,我一直试图在我的 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);

【问题讨论】:

    标签: javascript android angularjs cordova phonegap-plugins


    【解决方案1】:

    如果你只想返回使用

    $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
       }
    });
    

    【讨论】: