【发布时间】:2021-05-03 03:21:51
【问题描述】:
在我刷新浏览器以从本地存储中检索数据并更新该数据后,它没有更新。但是当我添加新项目并更新它时,它正在更新。这里似乎有什么问题?
//----- update existing item's subtotal in localstorage
changeSubtotalOfExisting(qty ) {
let updateQty = JSON.parse(localStorage.getItem('cart_items'));
updateQty['qtyTotal'] = qty;
localStorage.setItem("cart_items", JSON.stringify(updateQty));
console.log('updateQty: ', updateQty );
}
这是一个 stackblitz 示例: https://stackblitz.com/edit/angular-ivy-i8kpub?file=src/app/app.component.ts
【问题讨论】:
-
我认为您需要制作字符串化对象的副本(而不是按原样更新),然后删除 localStorage 上一个项目,然后再次设置它,因为您可以设置它
-
没有必要删除前一项,因为
setItem会覆盖可能存在的值。难道qty实际上并没有改变,这就是为什么你没有看到任何新价值? -
在控制台上,我看到 qty 已更新,但本地存储未更新。我实际上重命名了该方法并在其上添加了“现有”。原来是 changeSubtotal() ,它们的过程几乎相同。我测试了 2 个不同数量的不同对象,它们正在控制台上更新。
标签: javascript angular local-storage