2017-09-25 52 views
0

我正在測試angularjs的cookie。我想知道爲什麼它在控制檯中返回undefined?當我使用$ cookieStore.put()工作時設置或保存值時,當從cookie中獲取值時,它將返回undefined。

<!DOCTYPE html> 
<head runat="server"> 
    <title></title> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular-cookies.js"></script> 
    <script> 
     angular.module('app', ['ngCookies']).controller('MyController', ['$scope','$cookieStore', function($scope, $cookieStore) { 

      $scope.WriteCookie = function() {   
       $cookieStore.put('visited', $scope.yes);     
       console.log($cookieStore.get('visited')); 
      }  

      $scope.ReadCookie = function() { 
       $cookieStore.get('visited'); 
       console.log($cookieStore.get('visited')); 
      } 

     }]); 
    </script> 
</head> 
<body ng-app="app"> 
    <form> 
    <div ng-controller="MyController">  
    <input type="button" value="Write Cookie" ng-click="WriteCookie()" /> 
    <input type="text" ng-model="yes" /> 

    <input type="button" value="Read Cookie" ng-click="ReadCookie()" /> 
    <input type="text" ng-model="cookie" /> 
    </div> 
    </form> 
</body> 
</html> 
+0

你似乎沒有開口''標籤 – Phil

+0

@皮爾只是一樣沒有任何反應,它是未定義的。 – Chuck

+0

似乎工作得很好〜http://plnkr.co/edit/hqbFDzuCB1N9ZTUsq321?p=preview。我添加了'$ scope.cookie = $ cookieStore.get('visited')',這樣你就可以在我的本地機器上看到值 – Phil

回答

0

嘗試這樣的:

更新cookie版本1.6.6,並使用$餅乾代替$的CookieStore

angular.module('myApp', ['ngCookies']) 
.controller('myController', ['$cookies', function($cookies) { 

    $cookies.put('myFavorite', 'oatmeal'); 
    var favoriteCookie = $cookies.get('myFavorite'); 

    console.log('favoriteCookie', favoriteCookie); 

}]); 
+0

謝謝我發現我沒有運行本地主機 – Chuck

0

的我測試你的代碼兩種方式。打開它作爲文件和從服務器。在第一種情況下,我得到'未定義',而在第二種情況下,它按預期讀取cookie。我做了一些挖掘,看起來像一些瀏覽器,包括Chrome瀏覽器不允許設置作爲文件打開的頁面的Cookie。 More info ...

+0

這是一個有趣的情況,首先我直接打開文件不使用本地主機,但是當我在本地主機上運行它的作品! – Chuck

+0

看起來像你那樣暢通無阻。 – yesIcan