2013-09-23 153 views
3

根據cookie中設置的值,我的應用應該有不同的默認路由。但在我的路由器配置$cookies未定義 - 在應用程序的引導階段,似乎只定義了$cookieProvider(並且$cookieStore也不可用)。我如何從中得到實際的$cookies對象,以供我的服務稍後訪問。從cookie設置角度默認路由

angular.module('jnr').config(['$routeProvider', '$locationProvider', '$cookiesProvider', function($routeProvider, $locationProvider, $cookiesProvider) { 

     $locationProvider.html5Mode(true).hashPrefix('!'); 

     $routeProvider.when('/tunes', { 
      templateUrl: '/views/list-tunes.html' 
     }).when('/tunes/:instrument', { 
      templateUrl: '/views/list-tunes.html' 
     }).otherwise({ 
      redirectTo: '/tunes/' + ([get instrument from the cookie here] || 'clarinet') 
     }); 
    }]); 
}; 

回答

3

看來你不能在配置塊中使用。

在這裏看到:Why am I unable to inject angular-cookies?這裏:Why can't I get a $location injected into in my config()?

因爲:

配置塊 - 是否會在供應商登記和配置階段執行。只有提供者和常量可以注入到配置塊中。這是爲了防止服務在完全配置之前發生意外實例化

而$ cookies是一項服務,您不能在配置塊中注入服務。

您必須將其注入運行塊。

或者使用jQuery的cookie的API這樣的:

$.cookie('myCookie') 
+0

我應該在我的問題中發表評論,說現階段$ cookieStore不可用 - 只有$ cookieStoreProvider – wheresrhys

+0

爲什麼不可用?要使用它,你必須下載angular-cookies.js並注入它,就像我說的 –

+1

'爲什麼'是一個很好的問題。在應用程序生命週期稍後調用的另一個服務中,可以使用$ cookie,但我認爲module.config以不同的方式注入依賴關係,並且清晰如泥的角度文檔並不便於計算出差異究竟是什麼 – wheresrhys

0

沒錯。這很奇怪,

  1. 納克將屏幕從任何CONFIGS
  2. 我不認爲答案很明顯,直到今天(花幾個小時試圖讓角做它應該做的後,該功能,作爲客戶端框架):-)

只需使用舊的嘗試和真正: window.document.cookie

集體額頭嫌......