[英]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.