3

我的应用程序应该有不同的默认路由,具体取决于 cookie 中设置的值。但是在我的路由器配置$cookies中没有定义 - 在应用程序引导的这个阶段,似乎只有$cookieProvider定义(同样$cookieStore也不可用)。我如何从这里得到$cookies我的服务以后可以访问的实际对象。

    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')
        });
    }]);
};
4

2 回答 2

3

看来您不能在配置块中使用。

请参见此处:为什么我无法注入 angular-cookies?在这里:为什么我不能在我的 config() 中注入 $location?

因为 :

配置块 - 在提供者注册和配置阶段执行。只有提供者和常量可以注入到配置块中。这是为了防止在完全配置之前意外实例化服务

$cookies 是一项服务,您不能在配置块中注入服务。

你必须在运行块中注入它。

或者像这样使用 jquery cookie API:

$.cookie('myCookie')
于 2013-09-23T12:59:12.743 回答
0

是的。这很奇怪;

  1. ng 将从任何配置中筛选该功能
  2. 直到今天我才想到明显的答案(在花了几个小时试图让角度去做它应该做的事情之后,作为一个客户端框架):-)

只需使用经过验证的旧版本:window.document.cookie

集体敲打额头……

于 2014-04-23T14:37:34.773 回答