2014-05-22 21 views
11

Khi tôi nhấp vào tr mà không có bất kỳ bộ lọc nào, chức năng của tôi array.splice() hoạt động. Các chỉ mục trong mảng theo đúng thứ tự, do đó, các công việc array.splice() hoạt động.Cách xóa mục khỏi mảng bằng bộ lọc trong AngularJS?

Khi bộ lọc được bật, Chỉ mục trong mảng không được cập nhật và vẫn theo thứ tự. Vì vậy, array.splice() xóa mục sai.

<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); 
    }; 

Làm cách nào để cập nhật chỉ mục trong mảng? Hoặc Làm thế nào để loại bỏ các mục bên phải?

+0

bạn không thể chuyển dự án vào chức năng? tức là ng-click = "xóa (dự án)" –

Trả lời

7

Giải pháp đơn giản nhất là thay đổi chức năng xóa của bạn để thực hiện dự án thay vì chỉ mục.

$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); 
     } 
    } 
} 

Ví dụ Plunker: http://plnkr.co/edit/51SNVMQjG3dsmpYI5RyY?p=preview

+0

Cảm ơn bạn rất nhiều! Nó hoạt động tuyệt vời – Steffi

21

Nó dễ dàng hơn để ghép bạn dự án ở vị trí thực tế của phần tử trong mảng sử dụng indexOf.

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

Bằng cách này, bạn chỉ cần chuyển đến chức năng xóa chỉ dự án hiện tại.

<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> 
+1

Giải pháp tuyệt vời !!! Thanh lịch và hiệu quả! Cảm ơn người đàn ông, thực sự. – Eduardo

+0

Đây phải là câu trả lời được chấp nhận, điều này không phải lặp qua mảng. – Tillman32

+0

Dude u là một người tiết kiệm cuộc sống đang phải vật lộn với điều này cả ngày –

Các vấn đề liên quan