nog*_*ias 4 javascript cookies angularjs
我在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=/";
Run Code Online (Sandbox Code Playgroud)
但由于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";
}
});
Run Code Online (Sandbox Code Playgroud)
但我无法设置到期日期,路径和域名,因为$ cookies不可用.
我该怎么办?
and*_*zep 14
如果您使用的是角度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;
}]);
Run Code Online (Sandbox Code Playgroud)
只是不要犯同样的错误,我首先使用这样的新对象分配默认值:
$cookiesProvider.defaults = {path: '/', secure: true};
Run Code Online (Sandbox Code Playgroud)
这会破坏对象的引用,并且不再覆盖默认值.
$cookies允许您使用$cookiesProviderput(key, value, [options])中的选项,包括过期属性。
您还可以看看如何在 AngularJS 中设置 cookie 的过期日期