2017-04-20 115 views
-1

我得到$ http中的數據並放入cookie中,但無法工作。這裏是我的代碼Cookies不工作angularjs

服務

.factory('dataServices',dataServices); 




    function dataServices(){ 

     var cart =[]; 
      var services = { 
          cart : cart, 
          addCart : addCart 
       } 
     return services 
          function addCart(tensp,gia,img,sl){ 
          cart.push({tensp:tensp,gia:gia,img:img,sl:sl}) 
         } 
    } 

而且在JS

function shopController(dataServices,$cookies){ 
     var vm=this; 
    vm.cart = dataServices.cart; 
     vm.add = function(tensp,gia,img){ 
         return dataServices.addCart(tensp,gia,img,1); 
         $cookies.put('cart',vm.cart); 
        console.log($cookies.get('cart')) 
        } 
} 

的Html

<button class="btn btn-primary" 
       ng-click="vm.add(data.tensp,data.gia,data.img)"> 
       Add to Cart</button> 

下面是數據我把餅乾想要的。它JSON文件

[{"tensp":"CPU INTEL CORE I5","gia":"400","img":"item14.jpg","sl":1}] 

但在執行console.log什麼節目。我的錯在哪裏?請幫我

+1

也許,只是也許,你的'return'語句後沒有執行任何操作。把'$ cookies.put('cart','vm.cart'); console.log($ cookies.get('cart'));'在'return'語句之前。 :) – eminlala

+0

不應該是'$ cookies.put('cart',vm.cart);'? – gaganshera

+0

@eminlala我使用這個,現在我在我的cookies幫助vm.cart,但不是我想要的數據 –

回答

1

嘗試像這樣(刪除圍繞vm.cart單引號):

function shopController(dataServices,$cookies){ 
     var vm=this; 
    vm.cart = dataServices.cart; 
     vm.add = function(tensp,gia,img){ 
          //first add data to dataServices.cart 
          dataServices.addCart(tensp,gia,img,1); 

          //then add it to $cookies      
          $cookies.putObject('cart',vm.cart); 
          console.log($cookies.getObject('cart')) 
        } 
} 

由於您的vm.data是一個對象,你應該使用putObjectgetObject methods.When您嘗試獲取來自值$cookies,你將不得不這樣做:

var val = $cookies.getObject('cart')); 
+0

這不是工作。我在console.log中獲得了vm.cart –

+0

好吧,我現在看到'vm.cart'不只是一個'string'值。我會編輯我的答案。 – eminlala

+0

我嘗試它,但現在我得到錯誤'JSON中的意外的令牌v' –