带有angularjs 1.4到期日的$ cookies

时间:2015-08-11 06:27:26

标签: angularjs cookies angular-cookies

如何使用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.

但它没有用。我的firebug只将会话日期显示为会话。

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

3 个答案:

答案 0 :(得分:6)

调试类似的问题。

主要错误是由于代码中的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.jsangular-cookies.js上的两个依赖关系 - 在侧栏中链接 - 我已经在谷歌的cdn上链接到1.4.2。

答案 1 :(得分:3)

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

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

示例:

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

设置日期对象的小时,分​​钟,天数以设置Cookie到期。 默认是会话。

(抱歉英语不好:)。

答案 2 :(得分:2)

我遇到过firefox没有保存cookie的问题。根据doc https://docs.angularjs.org/api/ngCookies/service/ $ cookies,正确的cookie调用应该是:

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

请注意“过期vs到期和[]包装args。