我正在尝试编写一个函数,使我能够在单击按钮时删除项目。我的ng-repeat如下:
<tr ng-repeat="x in myData.List">
<td>{{x.name}}</td>
<td>{{x.item}}</td>
<td><button type="submit" ng-click="delete(x.id)" class="button">Remove</button></td>
</tr>
我的删除功能是:
$scope.delete = function (id) {
var index = $scope.myData.List.indexOf(id);
$scope.myData.List.splice(index,1);
};
但问题是它删除了最后一个对象。但我想删除一个特定的项目。我该怎么办?
答案 0 :(得分:4)
您应该在x
中使用id
代替.indexOf
:
$scope.delete = function (x) {
var index = $scope.myData.List.indexOf(x);
$scope.myData.List.splice(index,1);
};
和
<button type="submit" ng-click="delete(x)" class="button">Remove</button>
答案 1 :(得分:3)
这不是特定角度的问题。 Array Splice是相关的JavaScript数组操作。仅传递索引x
而不是x.id
。所以你的HTML代码将是......
<td><button type="submit" ng-click="delete(x)" class="button">Remove</button></td>
$scope.delete = function (x) {
var index = $scope.myData.List.indexOf(x);
$scope.myData.List.splice(index,1);
};
答案 2 :(得分:1)
问题是你的myData.List
是一个对象而不是ids的集合。
您需要搜索id
$scope.delete = function (id) {
var index=-1;
for(;index<$scope.myData.List.length;index++){
if($scope.myData.List.id===id)
break;
}
if(index!==-1){
$scope.myData.List.splice(index,1);
}
}
或者你可以将对象传递给Nicolai发布的功能