5

如何使用 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 但它无法保存。我的警报显示未定义。

4

3 回答 3

6

遇到你的问题调试类似的东西。

主要错误是由于您的代码中的expiryvs造成的。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.jsangular-cookies.js- 在侧栏中链接 - 我已链接到 1.4.2 在 google 的 cdn 上。

于 2015-08-12T00:00:36.343 回答
3

使用这个经过修改的 angular-cookie 库。在此您可以设置带有过期对象和路径的 cookie

https://github.com/babarxm/angular-cookies-fixed/tree/v1.5.6

例子:

$cookies.put("token", {
    expires : new Date(),
    path : "/somepath"
});

设置日期对象的小时、分钟、天数以设置 cookie 过期。默认为会话。

(抱歉英语不好:)

于 2016-06-26T11:43:33.533 回答
2

我遇到了Firefox不保存cookie的问题。根据文档https://docs.angularjs.org/api/ngCookies/service/$cookies,正确的 cookie 调用应该是:

$cookies.put("tech","angularjs",[{expires:now}]);

请注意“过期与过期和 [] 包装参数。

于 2016-09-14T22:59:48.453 回答