2017-04-21 71 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

完美。非常感谢 ! –