使用orderBy过滤器angularjs删除错误的行

时间:2016-01-21 11:30:37

标签: html css angularjs filter

我用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
};

我错过了什么?

1 个答案:

答案 0 :(得分:1)

$index表示渲染表中的索引。但是,您根据原始数组中的索引删除。 orderBy:不对原始数组进行排序,而是将有序副本传递给ng-repeat

解决方案:您有两种选择:

  1. 对原始数组进行排序,不要使用orderBy:

  2. 不要通过索引标识要删除的项目,而应标识其ID或实际条目本身。例如:

    $scope.removeRow = function (task) {
        $scope.tasks.splice($scope.tasks.indexOf(task), 1);
    };