我在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不可用。
我该怎么办?
答案 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中的选项,包括过期属性。