$cookies with angularjs 1.4 expiration date

Alaksandar Jesus Gene picture Alaksandar Jesus Gene · Aug 11, 2015 · Viewed 13.4k times · Source

How do i set the cookie with expiration date with angularjs 1.4. The documentation says to use

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.

But its not working.My firebug is showing the expiration date as Session only.

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"));
    }
});

I tried to set the jsFiddle but i couldnt save it. My alert is showing undefined.

Answer

Ali W picture Ali W · Aug 12, 2015

Ran into your problem debugging something similar.

The main bug was due to expiry vs expires in your code.

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/

Note the two dependencies on angular.js and angular-cookies.js - linked in the side bar - I've linked to 1.4.2 on google's cdn.