簡體   English   中英

如何在AngularJS中使用過濾器從數組中刪除項目?

[英]How to remove item from array with filter in AngularJS?

當我點擊沒有任何過濾器的tr ,我的函數array.splice()工作。 數組中的索引的順序正確,因此array.splice()可以正常工作。

啟用過濾器后,陣列中的索引不會更新,但仍以相同的順序排列。 所以array.splice()刪除了錯誤的項目。

    <span ng-click="orderP0 = 'statut_name'; reversePO=!reversePO">order</span>

    <tr ng-repeat="project in projects | orderBy : orderPO : reverse track by $index" ng-click="remove($event,$index,projects)">
        <span class="label" ng-bind="project.statut_name"></span>
    </tr>

    $scope.remove = function($event,index,array){
        array.splice(index,1);
    };

如何更新數組中的索引? 或者如何刪除正確的項目?

使用indexOf將項目拼接在數組中元素的實際位置更容易。

$scope.remove = function(project){
    $scope.projects.splice($scope.projects.indexOf(project),1);
}

這樣您只需要將當前項目傳遞給remove函數。

<tr ng-repeat="project in projects | orderBy : orderPO : reverse track by $index" ng-click="remove(project)">
    <span class="label" ng-bind="project.statut_name"></span>
</tr>

最簡單的解決方案是更改刪除函數以接受項目而不是索引。

$scope.remove = function(project){
    for(var i = $scope.projects.length - 1; i >= 0; i--){
        if($scope.projects[i].statut_name == project.statut_name){
            $scope.projects.splice(i,1);
        }
    }
}

示例Plunker: http ://plnkr.co/edit/51SNVMQjG3dsmpYI5RyY?p = preview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM