首页 文章

离子:如何覆盖后退按钮功能?

提问于
浏览
4

我需要覆盖两个按钮的后退按钮功能:

  • 导航栏左上角的后退图标

  • 硬件后退按钮(例如在android中)

但仅限于一个特定的视图,而不是全局视图 . 我怎样才能做到这一点?

2 回答

  • 4

    此代码用于android按钮,而导航栏上的按钮更简单:

    Android按钮:

    $ionicPlatform.registerBackButtonAction(function (event) {
      if($state.current.name=="home"){
        alert("button back");
      }
    }, 100);
    

    离子按钮:

    您可以编辑主题并查看如何定义菜单和视图?

  • 2

    可以从控制器中 override the back button functionality for both buttons . 这是代码:

    // run this function when either hard or soft back button is pressed
    var doCustomBack = function() {
        console.log("custom BACK");
    };
    
    // override soft back
    // framework calls $rootScope.$ionicGoBack when soft back button is pressed
    var oldSoftBack = $rootScope.$ionicGoBack;
    $rootScope.$ionicGoBack = function() {
        doCustomBack();
    };
    var deregisterSoftBack = function() {
        $rootScope.$ionicGoBack = oldSoftBack;
    };
    
    // override hard back
    // registerBackButtonAction() returns a function which can be used to deregister it
    var deregisterHardBack = $ionicPlatform.registerBackButtonAction(
        doCustomBack, 101
    );
    
    // cancel custom back behaviour
    $scope.$on('$destroy', function() {
        deregisterHardBack();
        deregisterSoftBack();
    });
    

    确保将 $rootScope 注入控制器 .


    有关更多详细信息和正确解释,请参阅相关问题的完整答案:

相关问题