2017-04-21 45 views
0

我試着添加餅乾。它工作的很好,但是當我刷新頁面並添加新的cookies時,舊的cookies消失了,cookies.length不會更新。它在我刷新頁面後更新。這裏是我的代碼添加新餅乾時,舊餅乾消失angularjs

​​

並在html中顯示。

vm.cookies = $cookies.getObject('cart'); 
{{vm.cookies.length}} 

我的錯在哪裏?請幫幫我 。這是我的plnkr https://plnkr.co/edit/StURuPuEBr8ykIUPdvBV?p=preview

+1

當您向同一個關鍵「cart」添加新值時,舊值將被覆蓋。如果您沒有「購物車」以外的其他關鍵字,則Cookie的長度應始終爲1.這是我根據您的代碼片段所做的猜測。如果你可以創建一個簡單的演示來演示問題,我會看看。 – Hoa

+0

https://plnkr.co/edit/StURuPuEBr8ykIUPdvBV?p=preview這裏是我創建的plnkr。我認爲你對我的問題。如何將新值添加到同一個密鑰並且不被覆蓋。你可以看到我的問題,當你點擊按鈕添加,並點擊空間(plnkr重新加載) –

回答

1

無論何時刷新頁面。 vm.cart將被設置爲[]。當你點擊「添加」時,一個項目將被添加到vm.cartvm.cart現在包含一個項目。當將vm.cart放入Cookie中時,Cookie中的所有現有項目都將被覆蓋。

如果你想保持在cookie中的所有項目,把項目直接以餅乾,並直接從餅乾檢索項目如下

var item = { 
    id: id, 
    masp: masp, 
    tensp: tensp 
}; 

var cart = $cookies.getObject('cart'); 

if (cart) { 
    var items = JSON.parse(cart); 
    items.push(item); 

    $cookies.putObject('cart', JSON.stringify(items)); 
} else { 
    $cookies.putObject('cart', JSON.stringify([ item ])); 
} 

這裏有一個demo

+0

完美。非常感謝 ! –