【问题标题】:Old cookies vanish when add new cookies angularjs添加新cookie angularjs时旧cookie消失
【发布时间】:2017-04-21 14:50:51
【问题描述】:

我正在尝试添加 cookie。它工作得很好,但是当我刷新页面并添加新的 cookie 时,旧的 cookie 消失了,并且 cookies.length 没有更新。我刷新页面后它会更新。这是我的代码

vm.cart = [];
vm.add = function(tensp,gia,img){
                    vm.cart.push({tensp:tensp,gia:gia,img:img,sl:1})
                    $cookies.putObject('cart',vm.cart);

        }

并以html显示。

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

我哪里错了。请帮我 。这是我的plnkr https://plnkr.co/edit/StURuPuEBr8ykIUPdvBV?p=preview

【问题讨论】:

  • 当您向同一个键cart 添加新值时,旧值将被覆盖。如果您没有除cart 之外的密钥,则cookie 长度应始终为1。这是我根据您的sn-p 的猜测。如果您可以创建一个简单的工作演示来演示该问题,我会看看。
  • plnkr.co/edit/StURuPuEBr8ykIUPdvBV?p=preview 这是我创建的 plnkr。我认为你对我的问题是正确的。如何将新值添加到同一个键且不被覆盖。当您单击按钮 add 并点击空格(plnkr reload)时,您可以看到我的问题

标签: javascript angularjs cookies


【解决方案1】:

每当您刷新页面时。 vm.cart 将设置为 []。当您单击“添加”时,将向vm.cart 添加一项。 vm.cart 现在包含一项。当vm.cart 被放入cookies 时,cookies 中的所有现有项都会被覆盖。

如果您想将所有项目保留在 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

【讨论】:

  • 完美。非常感谢!
猜你喜欢
  • 2013-07-16
  • 2022-11-03
  • 2021-11-29
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多