【问题标题】:Setting an angular default route from a cookie从 cookie 设置角度默认路由
【发布时间】:2014-04-23 22:37:34
【问题描述】:

我的应用应该有不同的默认路由,具体取决于 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')
        });
    }]);
};

【问题讨论】:

    标签: javascript angularjs cookies


    【解决方案1】:

    您似乎无法在配置块中使用。

    请看这里: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')
    

    【讨论】:

    • 我应该在我的问题中发表评论说在这个阶段 $cookieStore 也不可用 - 只有 $cookieStoreProvider
    • 为什么不可用?要使用它,你必须下载 angular-cookies.js 并像我说的那样注入它
    • “为什么”是个好问题。在应用程序生命周期后期调用的另一项服务中,$cookies 可用,但我猜 module.config 以不同的方式注入依赖项,并且 clear-as-mud angular 文档不容易弄清楚到底有什么区别
    • 是的,这是逻辑,因为配置块 - 在提供者注册和配置阶段执行。见这里:stackoverflow.com/questions/18137662/…
    • 我最终使用了 gist.github.com/steveosoule2/4073857 中的一个函数来完成我的一次性 cookie 阅读任务。似乎是 Angular 的一个设计缺陷,cookie - 通常用于存储 init 所需的重要配置细节 - 不能通过 angular 自己的 api 在 init 上使用。
    【解决方案2】:

    是的。这很奇怪;

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

    只需使用久经考验的正确方法: window.document.cookie

    集体打额头……

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多