我用AngularJS制作表格。我使用了orderBy
过滤器。之后我的删除功能开始删除另一行,除了我点击删除。
以下是过滤器:
<tr class = "table-row isActive-{{task.active}} rowNumber-{{$index + 1}}" ng-repeat = "task in tasks | filter:search:strict | orderBy: '-priority':true">
<td>
<span class="delete-link">
<input type="button" data-ng-click="removeRow($index)"/>
</span>
</td>
</tr>
并删除功能
$scope.removeRow = function (productIndex) {
$scope.tasks.splice(productIndex, 1);
productIndex=0
};
我错过了什么?
答案 0 :(得分:1)
$index
表示渲染表中的索引。但是,您根据原始数组中的索引删除。 orderBy:
不对原始数组进行排序,而是将有序副本传递给ng-repeat
。
解决方案:您有两种选择:
对原始数组进行排序,不要使用orderBy:
不要通过索引标识要删除的项目,而应标识其ID或实际条目本身。例如:
$scope.removeRow = function (task) {
$scope.tasks.splice($scope.tasks.indexOf(task), 1);
};