AngularJS $http 请求在提供者函数中

kno*_*fel 2 routes angularjs angular-http

我正在尝试使用 AngularJS 实现客户端身份验证。现在,我将每个路由的访问级别作为工厂注入到我的应用程序的配置函数中。这是我的代码:

shop = angular.module('shop', ['ngCookies']).
provider('AccessLevels',function () {
    var accessLevels = {
        guest: 7,
        customer: 6,
        seller: 4
    };
    return {
        $get: function () {
            return accessLevels
        }
    }
}).
config(['$routeProvider', '$locationProvider', 'AccessLevelsProvider', function ($routeProvider, $locationProvider, AccessLevelsProvider) {

    var accessLevels = AccessLevelsProvider.$get();

    $routeProvider.
        when('/index', {templateUrl: "pages/index", controller: IndexController, access: accessLevels.guest}).
        when('/user', {templateUrl: "pages/user", controller: UserController, access: accessLevels.customer}).
        when('/sign_up', {templateUrl: "pages/sign_up", controller: SignUpController, access: accessLevels.guest});
}]);
Run Code Online (Sandbox Code Playgroud)

是否可以通过 $http.get 请求获取我的访问级别的数据?我无法将 $http 注入到我的提供程序函数中,所以我现在有点无助。任何帮助,将不胜感激。

pko*_*rce 5

使用当前版本的 AngularJS,您无法注入$http配置块(更多信息请参见: https: //stackoverflow.com/a/12665051/1418796)。最重要的是,配置块是同步的,因此调用异步$http无论如何都不起作用。

不幸的是,没有基于动态数据重新定义路线的规范方法。您可以尝试多种解决方法,其中之一如下所述: https: //stackoverflow.com/a/13173667/1418796