2013-06-19 23 views
2

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

是否有可能通過$ http.get請求獲取我的訪問級別的數據?我無法將$ http注入到我的提供者函數中,因此我現在有點無助。 任何幫助,將不勝感激。

回答

4

使用當前版本的AngularJS,您不能將$http注入到配置塊(更多信息請參閱:https://stackoverflow.com/a/12665051/1418796)。在此配置塊的頂部是同步的,所以調用異步$http無論如何不會工作。

不幸的是,沒有規範的方式來重新定義基於動態數據的路線。您可以嘗試各種解決方法,其中之一描述如下:https://stackoverflow.com/a/13173667/1418796

+0

非常感謝您的快速和真正有用的回覆! – knoefel