AngularJS/JavaScript从本地存储阵列中删除特定元素
我的LocalStorage中有一个数组,我使用ngStorage操作该数组。 我试图从那里删除项目,但当我使用AngularJS/JavaScript从本地存储阵列中删除特定元素,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我的LocalStorage中有一个数组,我使用ngStorage操作该数组。 我试图从那里删除项目,但当我使用 $localStorage.someArrayName.splice(id, 1); 只有第一个删除的项目工作正常,然后删除停止工作,因为我想 我也试过这样的方法: if (id === $localStorage.someArrayName.length) { $localStorage.someArrayName.pop();
$localStorage.someArrayName.splice(id, 1);
只有第一个删除的项目工作正常,然后删除停止工作,因为我想
我也试过这样的方法:
if (id === $localStorage.someArrayName.length) {
$localStorage.someArrayName.pop();
}
else if (id === 0) {
$localStorage.someArrayName.shift();
}
else {
$localStorage.someArrayName.splice(id, 1);
}
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
但我得到了更糟糕的结果
我试着从下面的例子:
if (id === $localStorage.someArrayName.length) {
$localStorage.someArrayName.pop();
}
else if (id === 0) {
$localStorage.someArrayName.shift();
}
else {
$localStorage.someArrayName.splice(id, 1);
}
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
但是它删除了这些值,我在本地存储阵列中得到了null,null,null值。然后我甚至得到了关于重复值的ng repeat错误:
错误:[ngRepeat:dupes]中继器中不允许有重复项
我受不了。我不确定这是一个小问题还是我做错了什么。你能给我一些指导吗?提前谢谢你
以下是保存在本地存储中的阵列的外观:
[{"content":"something"},{"content":"else"}] //etc...
因此,您正在使用ng repeat进行某些操作,并且您的ID在那里。如果在从数组中删除at项时使用$index作为id参数的值,则数组编号不再相同,id也不是您所期望的 您也不需要pop()和shift()方法 对你的ng重复进行分段是这样的:
if (id === $localStorage.someArrayName.length) {
$localStorage.someArrayName.pop();
}
else if (id === 0) {
$localStorage.someArrayName.shift();
}
else {
$localStorage.someArrayName.splice(id, 1);
}
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
那么你需要这样的东西:
if (id === $localStorage.someArrayName.length) {
$localStorage.someArrayName.pop();
}
else if (id === 0) {
$localStorage.someArrayName.shift();
}
else {
$localStorage.someArrayName.splice(id, 1);
}
delete $localStorage.someArrayName[id];
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete($index)>delete</childelem>
</element>
<element ng-repeat="item in someThing">
{{item.prop}} <childelem ng-click=delete(item)>delete item</childelem>
</element>
这将删除整个{“content”:“something”}
从你的阵列
不知道这是否是问题的正确方向,也不知道情况是否如此,但我希望这会对您有所帮助。致以最良好的祝愿 谢谢大家!!它是这样工作的!我还不能100%地向自己解释,但是:))