【问题标题】:$cookies with angularjs 1.4 expiration date$cookies 与 angularjs 1.4 到期日期
【发布时间】: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,但无法保存。我的警报显示未定义。

【问题讨论】:

    标签: angularjs cookies angular-cookies


    【解决方案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.jsangular-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 和 [] 包装参数。

      【讨论】:

      • 不需要方括号。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多