$cookies 与 angularjs 1.4 到期日期
Posted
技术标签:
【中文标题】$cookies 与 angularjs 1.4 到期日期【英文标题】:$cookies with angularjs 1.4 expiration date 【发布时间】:2015-11-03 06:14:36 【问题描述】:如何使用 angularjs 1.4 设置带有过期日期的 cookie。文档说要使用
expires - string|Date - String of the form "Wdy, DD Mon YYYY HH:MM:SS GMT" or a Date object indicating the exact date/time this cookie will expire.
但它不起作用。我的萤火虫仅将到期日期显示为会话。
HTML
<div ng-app="cookieApp" ng-controller="cookieCtrl">
<button ng-click="setCookie()">Set Cookie</button>
<button ng-click="getCookie()">Get Cookie</button>
</div>
Javascript
var app=angular.module("cookieApp",['ngCookies']);
app.controller("cookieCtrl",function($scope, $cookies)
$scope.setCookie = function()
console.log("setCookie");
var now = new Date();
now.setDate(now.getDate() + 7);
$cookies.put("tech","angularjs",expiry:now);
$scope.getCookie = function()
alert( $cookies.get("tech"));
);
我尝试设置 jsFiddle,但无法保存。我的警报显示未定义。
【问题讨论】:
【参考方案1】:在调试类似的东西时遇到了问题。
主要错误是由于您的代码中的expiry
vs expires
。
var app = angular.module("cookieApp", ["ngCookies"]);
app.controller("cookieCtrl", function ($scope, $cookies)
$scope.setCookie = function ()
console.log("setCookie");
var now = new Date();
now.setDate(now.getDate() + 7);
$cookies.put("tech", "angularjs",
expires: now
);
$scope.getCookie = function ()
alert($cookies.get("tech"));
);
jsfiddle:http://jsfiddle.net/ucskyv67/
注意 angular.js
和 angular-cookies.js
的两个依赖项 - 在侧栏中链接 - 我已链接到 google cdn 上的 1.4.2。
【讨论】:
【参考方案2】:使用这个经过修改的 angular-cookie 库。 在此您可以设置带有过期对象和路径的 cookie
https://github.com/babarxm/angular-cookies-fixed/tree/v1.5.6
例子:
$cookies.put("token",
expires : new Date(),
path : "/somepath"
);
设置日期对象的小时、分钟、天数以设置 cookie 过期。 默认为会话。
(抱歉英语不好:)
【讨论】:
感谢您的回答。但我已经不在 1.x 版本中,正在试用带有类型脚本的 2.x 版本。我会及时通知您并感谢您的回复。【参考方案3】:我遇到了 Firefox 不保存 cookie 的问题。根据文档https://docs.angularjs.org/api/ngCookies/service/$cookies,正确的 cookie 调用应该是:
$cookies.put("tech","angularjs",[expires:now]);
注意“expires vs expiry 和 [] 包装参数。
【讨论】:
不需要方括号。以上是关于$cookies 与 angularjs 1.4 到期日期的主要内容,如果未能解决你的问题,请参考以下文章
从 angularJS 1.3-beta 迁移到 1.4 后,$http 帖子无法正常工作
AngularJS:$cookies.remove 不是函数