【问题标题】:remove array object from localStorage Angular从 localStorage Angular 中删除数组对象
【发布时间】:2015-08-01 16:11:26
【问题描述】:

在我的 Ionic Framwork 应用程序中,我有一个购物车数组存储在有角度的 localStorage 像这样

localStorage.setItem('mycart', JSON.stringify(items));

然后我像这样检索 localStorage 数组

var cart_items = JSON.parse(localStorage.mycart);

输出

[{"id":"1","item_name":"pepsi","qty":"2"},{"id":"2","item_name":"coke","qty":"2"},
{"id":"3","item_name":"fanta","qty":"3"}]

我正在尝试使用以下代码删除产品项目。但它不起作用,它会删除数组中的整个项目

for ( var i = 0; i < cart_items.length; i++ ) {
    if ( cart_items[i].id === $removeId ) { //
       cart_items.splice(i,1); 
    }
}
localStorage.mycart= JSON.stringify(cart_items );

它删除数组中的所有项目

【问题讨论】:

  • 你能准确地说出“$removeId”的来源吗?
  • $removeId // the id of the item
  • 我知道它是项目的 id,但你能添加“在哪里”初始化它吗?
  • 我通过像function($removeId )这样的参数传递id的值,removeId包含项目id的值
  • 在命名变量时不应该使用 $。 $ 是 Angular 内置服务的保留字符。我实际上不明白为什么它不起作用。我的意思是它应该工作。您能否提供代码 sn-p 或解决问题的 plunker ?我帮你做这件事会更容易。

标签: arrays angularjs local-storage


【解决方案1】:

这终于对我有用了

var cart_items = JSON.parse(localStorage["mycart"]);
for (i=0;i<cart_items.length;i++)
  if (cart_items[i].id == 'id_1') cart_items.splice(i,1);
  localStorage["mycart"] = JSON.stringify(cart_items);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2018-08-27
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多