Angular JS - 设置$ cookies域范围失败

时间:2015-07-30 08:55:19

标签: javascript angularjs cookies

我在angularjs应用程序中设置cookie时遇到了麻烦。情况是我想在站点范围内设置一个cookie,但我不知道如何使用angular js default $ cookies对象设置cookie的所有参数。

例如,通常在Javascript中我会写这个

var exp = new Date();
exp.setTime(exp.getTime()+(24*60*60*1000)); // expires after a day
document.cookie = "myCookies=yes;expires="+exp.toGMTString()+ ";domain=.example.com;path=/";

但由于DOM对象无法轻松加载到我的应用程序中,所以我必须使用$ cookies(angular-cookies.js)。新代码是:

angular.module('MyApp')
    .controller('MyCtrl', function ($scope, $filter, Slug,PUBLIC_ROUTES, $cookies) {
        var myCookies = $cookies['mycookies'];
        if (typeof myCookies == 'undefined' || typeof myCookies == undefined) {
            $cookies['mycookies'] = "yes";
        }
    });

但我无法设置到期日期,路径和域名,因为$ cookies不可用。

我该怎么办?

2 个答案:

答案 0 :(得分:13)

如果您使用的是角度1.4+,请在主应用模块的配置部分设置$cookiesProvider.defaults。例如:

angular.module('my-app', [ngCookies])
.config(['$cookiesProvider', function($cookiesProvider) {
    // Set $cookies defaults
    $cookiesProvider.defaults.path = '/';
    $cookiesProvider.defaults.secure = true;
    $cookiesProvider.defaults.expires = exp_date;
    $cookiesProvider.defaults.domain = my_domain;
}]);

只是不要犯了同样的错误,我首先使用这样的新对象分配默认值:

$cookiesProvider.defaults = {path: '/', secure: true};

这会破坏对象的引用,并且不再重写默认值。

答案 1 :(得分:1)

$cookies允许您put(key, value, [options])使用$cookiesProvider中的选项,包括过期属性。

您还可以查看How to set expiration date for cookie in AngularJS