Angular 从localstorage中的对象删除阵列项-Ionic应用程序
我有一个Angular 从localstorage中的对象删除阵列项-Ionic应用程序,angular,typescript,ionic-framework,local-storage,Angular,Typescript,Ionic Framework,Local Storage,我有一个Ionic应用程序,将数据存储在localStorage中。要求是根据用户的单击,从localStorage上对象的数组中删除一些项 我有下面的代码,但不知怎么的不工作。请指出我犯错误的地方 home.html: 提醒{{项目[0]+1} {{项目[1]|日期:'medium'} home.ts: 删除提醒(项目){ var newObj=JSON.parse(localStorage.getItem('Data'); console.log(“要删除的索引”,项); 新OBJ.数据
Ionic
应用程序,将数据存储在localStorage
中。要求是根据用户的单击
,从localStorage
上对象的数组中删除一些项
我有下面的代码,但不知怎么的不工作。请指出我犯错误的地方
home.html:
提醒{{项目[0]+1}
{{项目[1]|日期:'medium'}
home.ts:
删除提醒(项目){
var newObj=JSON.parse(localStorage.getItem('Data');
console.log(“要删除的索引”,项);
新OBJ.数据拼接(第1项)
setItem('Data',JSON.stringify(newObj));
}
我的localStorage
如下所示:
Key : Data
Value : {"data":[[0,"1600074900000"],[1,"1600679760000"]]}
let DataObj = JSON.parse(localStorage.getItem('Data'));
问题是上面的主页。ts
正在删除完整的数组
,而不是单击的项目
函数(单击)=“删除提醒(项目)”
返回要删除的正确项目。例如,如果我单击任何项目0,“1600074900000”
,它将返回0,“1600074900000”
。我已通过console.log(项)进行了检查
但它并不是删除我正在选择的项目。相反,它是从数组顶部删除项。例如,若数组有3条记录,则从上到下删除记录。而且,当它到达最后一条记录时,它不会删除最后一条记录。您必须
更新本地存储中的值removietem()
仅按键从本地存储中删除项。因此,不要删除该键,只需使用新的数据键重新设置:
const newObj=localStorage.getItem(“数据”)
从对象中删除索引
localStorage.setItem(“数据”,newObj)
当您希望将对象存储在localStorage
上时,最好使用JSON.stringfy
如下:
Key : Data
Value : {"data":[[0,"1600074900000"],[1,"1600679760000"]]}
let DataObj = JSON.parse(localStorage.getItem('Data'));
localStorage.setItem('Data',JSON.stringify({“Data”:[[0,16007490000”],[1,16006797600”]});
因此,当您想要获取对象并进行修改时,可以执行以下操作:
Key : Data
Value : {"data":[[0,"1600074900000"],[1,"1600679760000"]]}
let DataObj = JSON.parse(localStorage.getItem('Data'));
因此,如果您使用JSON.strinigfy()
存储在home.ts
中,请尝试以下操作:
home.ts
删除提醒(项目){
让newObj=JSON.parse(localStorage.getItem('Data'));
newObj.data.forEach((元素,索引)=>{
if(元素[0]==项){
新对象数据拼接(索引,1)
}
})
setItem('Data',JSON.stringify(newObj));
}
我得到了带有以下更新代码的解决方案
在home.html中,完成以下更新:
<ng-container *ngFor="let item of items[0];let index = index" >
<ion-item no-lines class="items" *ngIf='this.allObj1 != 0' (click)="deletereminder(index)">
deletereminder(index){
var newObj = JSON.parse(localStorage.getItem('Data'));
var indextodelete = index;
newObj.data.splice(indextodelete, 1)
localStorage.setItem('Data', JSON.stringify(newObj));
}
我试过下面的方法,但不起作用。接头不工作const newObj=localStorage.getItem(“rp_data”)//从对象newObj.splice(索引,1)中删除索引;setItem(“rp_data”,newObj)
我在回答中为您添加了一些要点。看那个。您必须使用JSON.stringify()
&JSON.parse()
,然后您将拥有一个数据对象。从中取出阵列,然后使用拼接。好吗?我也为您添加了delet提醒()
函数。此外,您的模板中的*ngFor
不正确。我尝试了您的查询,但没有任何结果。我已经更新了delet提醒()
,还提供了这个新函数面临的问题。实际上if(element[0]==item)
始终为false,因此不起作用。你能提出建议吗?你能把项目
和你正在本地存储中设置的数组/对象都发布出来吗?这样我们就可以有更好的想法来玩了。你的代码的UI看起来怎么样,你能发布图像吗?