【问题标题】:How to load $cookies in Angular service?如何在 Angular 服务中加载 $cookies?
【发布时间】:2015-03-10 12:02:14
【问题描述】:

我已经定义了一个 Angular 服务,我想在其中访问一些 cookie。查看 AngularJS 文档,似乎$cookieStore is deprecated 并且应该支持$cookies。这是我的服务的外观:

'use strict';

var lunchrServices = angular.module('lunchrServices', ['ngCookies']);

lunchrServices.service('authService', ['$cookies', function ($cookies) {
    var user = $cookies.get('user') || null;

    this.login = function (userEmail) {
        user = userEmail;
        $cookies.put('user', userEmail)
    };
    this.logout = function () {
        user = null;
        $cookies.put('user', null);
    };
    this.currentUser = function(){
        return user;
    }

}]);

在使用TypeError: undefined is not a function 调用$cookies.get('user') 时出错。但是,如果我将$cookies 的每个实例更改为$cookieStore,它就可以完美运行(如下所示):

'使用严格';

var lunchrServices = angular.module('lunchrServices', ['ngCookies']);

lunchrServices.service('authService', ['$cookieStore', function ($cookieStore) {
    var user = $cookieStore.get('user') || null;

    this.login = function (userEmail) {
        user = userEmail;
        $cookieStore.put('user', userEmail)
    };
    this.logout = function () {
        user = null;
        $cookieStore.put('user', null);
    };
    this.currentUser = function(){
        return user;
    }

}]);

我想使用$cookies,但不知道为什么它会在$cookieStore 不使用时失败。有什么想法吗?

【问题讨论】:

    标签: javascript angularjs cookies


    【解决方案1】:

    我认为这与文档中的这一行有关

    重大更改:$cookies 不再公开表示 当前浏览器 cookie 值。现在你必须使用 获取/放置/删除/等。方法如下所述。

    这可能意味着以前版本的 Angular 在 $cookies 上没有这些方法。

    您的版本可能是旧版本。

    【讨论】:

    • 哎呀,太尴尬了。今晚你只是在回答我的问题......谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2020-03-01
    • 2018-07-06
    • 2017-09-28
    • 1970-01-01
    相关资源
    最近更新 更多