6

我正在使用 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它会引发错误。我希望在不必创建/使用指令的情况下实现功能性“后退”按钮,因为据我了解,然后实现模板和我不需要/想要的东西。

有没有办法做到这一点?谢谢

4

2 回答 2

11

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

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();
        }
      }
    }
});
于 2013-06-14T00:24:11.080 回答
3

我在使用 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]);
};

希望这对其他人有帮助。

于 2014-02-04T17:53:04.247 回答