我有两个ng-repeats
<p ng-repeat="Item in List | filter:{category:currentCategory.name} | orderBy:'name' track by Item.name ">
<a ng-click="addItem(Item)"><span class="glyphicon glyphicon-plus"></span>
{{Item.name}}
</a>
</p>
<p ng-repeat="NewItem in NewList | orderBy:'name' track by NewItem.name">
<a>{{NewItem .name}}</a>
<a ng-click="returnItem(NewItem)"><span class="glyphicon glyphicon-trash"></span></a>
</p>
我有2个问题,一个项目是List在移动到NewList时没有被删除,第二个问题是当我从NewList返回时它没有删除与它关联的项目.... I.E。我尝试删除最后一项,然后删除第一项。
这是我的角色
$scope.addItem = function (Item) {
$scope.NewList.push(Item);
$scope.List.splice(Item , 1);
};
$scope.returnItem = function (NewItem) {
$scope.List.push(NewItem);
$scope.NewList.splice(NewItem, 1);
};
我没有使用$ index,因为当我过滤列表时它根本不起作用。
任何选项或建议都很棒!我现在很难过。
答案 0 :(得分:0)
您没有为Array.splice函数提供它所期望的参数。
Array.slice的第一个参数应该是要从列表中删除的项目的索引。目前,您正在为其提供要删除的项目。
您应首先找到要删除的项目的索引。
尝试这样的事情
$scope.NewList.push(Item);
var index = $scope.List.indexOf(Item);
if(index !== -1) $scope.List.splice(index , 1);
<击> 注意:Array.indexOf不适用于对象数组。由于你有一个对象数组,你必须遍历列表(使用for循环),并比较name属性以找到你想要删除的项目的索引。
<罢工>var index = -1;
for (var i = 0; i < $scope.List.length; i++) {
if($scope.List[i].name === Item.name){
index = i;
break;
}
}
击> <击> 撞击>