AngularJS后退按钮

时间:2013-06-13 00:57:57

标签: android angularjs cordova

我正在使用Phonegap和AngularJS制作Android应用。我正在尝试创建一个按钮,用作“取消”和“后退”按钮,这基本上只是点击浏览器的“后退”按钮。

以下是取消按钮的示例HTML:

<a href="#" ng-click="goBack()" class="button--cancel weight--bold vertical-align--middle text-center">cancel</a>

这是该页面的控制器,带有goBack()按钮:

function NewOccasionCtrl($scope, $window) {
    $scope.$window = $window;
    $scope.goBack = function() {
      $window.history.back();
    };
}

这不会引发错误,但也不起作用......模拟器仍保留在同一页面上。如果没有$scope.$window = $window,则会抛出错误。我希望在不必创建/使用指令的情况下实现功能性的“后退”按钮,因为据我所知,然后实现模板和我不需要/想要的东西。

有办法做到这一点吗?感谢

2 个答案:

答案 0 :(得分:10)

我使用指令使后台功能可重用。这是我的最终代码:

HTML:

<a href back-button>back</a>

使用Javascript:

app.directive('backButton', function(){
    return {
      restrict: 'A',

      link: function(scope, element, attrs) {
        element.bind('click', goBack);

        function goBack() {
          history.back();
          scope.$apply();
        }
      }
    }
});

答案 1 :(得分:2)

我有这样的问题使用phonegap和angular,$ window.history.back()不起作用。所以我创建了一个解决方法。

$scope.urlHistory = [];

$scope.$on('$routeChangeSuccess', function () {
    if ($location.$$absUrl.split('#')[1] !== $scope.urlHistory[$scope.urlHistory.length - 1]) {
        $scope.urlHistory.push($location.$$absUrl.split('#')[1]);
    }
});

$scope.goBack = function () {
    $scope.urlHistory.pop();
    $location.path($scope.urlHistory[$scope.urlHistory.length - 1]);
};

希望这有助于其他人。