基于服务的AngularJS重定向路由

基于服务的AngularJS重定向路由,angularjs,Angularjs,有没有一种方法可以根据服务提交的条件重定向路由? 目前我试着这样做: .otherwise({ resolve: { redirect: function ($routeParams, $location, $http, $cookies) { $http({method: 'GET', url: '/user/' + $cookies.id}).success(function(data) { if

有没有一种方法可以根据服务提交的条件重定向路由? 目前我试着这样做:

.otherwise({
resolve: {
            redirect: function ($routeParams, $location, $http, $cookies) {
                $http({method: 'GET', url: '/user/' + $cookies.id}).success(function(data) {
                    if(data.isSuperUser || data.isStaff) {
                        $location.path('/info/info');
                    } else {
                        $location.path('/unity/list');
                    }
                }).error(function() {
                    $location.path('/unity/list');
                });
            }
        }});

但它总是在找不到提供程序的情况下失败。我怎样才能正确地做到这一点呢?

如果它在minify上出错,可能是因为它在你身上重命名了东西。依赖注入通常会在缩小时被压碎。尝试将重定向更改为:

redirect: ["$routeParams", "$location", "$http", "$cookies", function ($routeParams, $location, $http, $cookies) {
    ...
}]

这里有相关文档:查找“缩小说明”

您是否收到未知的提供程序错误?是的,似乎$location是问题所在,它仅在我使用yeoman缩小javascript时给出错误。在开发版本上,它可以工作。