2015-08-11 19 views
5

Wie setze ich den Cookie mit Ablaufdatum mit angularjs 1.4. Die Dokumentation sagt

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. 

Aber nicht working.My Firebug verwenden wird, um das Ablaufdatum als Session zeigt nur.

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

Ich versuchte, die jsFiddle zu setzen, aber ich konnte sie nicht retten. Meine Warnung wird nicht definiert angezeigt.

Antwort

6

Ran in Ihr Problem, etwas ähnliches zu debuggen.

Der Hauptfehler war aufgrund expiry vs expires in Ihrem 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/

Beachten Sie die zwei Abhängigkeiten von angular.js und angular-cookies.js - in der Seitenleiste verbunden - ich 1.4.2 auf Googles CDN verknüpft haben.

3

Verwenden Sie diese eine modifizierte Bibliothek von Winkel-Cookies. In diesem können Sie Cookies mit dem Objekt Übergang und Weg endet auch

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

Beispiel:

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

Stellen Sie die Stunden, Minuten, Objekt Tagen nach Cookies gesetzt abläuft. Standard wird Sitzung sein.

(sorry für schlechtes Englisch :)

+0

Danke für die answer.But i von 1 bin.. x version und probier Version 2.x mit typ script. Ich werde Sie benachrichtigt und Ihre Antwort zu schätzen. –

2

Ich habe in dieser Frage laufen mit firefox nicht Cookies zu speichern. Nach dem doc https://docs.angularjs.org/api/ngCookies/service/ $ Cookies, die richtige sollten Cookie Aufruf sein:

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

Ton der „Ablauf vs Ablauf und die [] Einwickeln args

+1

Eckige Klammern sind nicht erforderlich. –