Ste*_*ffi 12 javascript arrays filter angularjs angularjs-ng-repeat
当我点击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);
};
Run Code Online (Sandbox Code Playgroud)
如何更新数组中的索引?或者如何删除正确的项目?
Vic*_*ens 21
使用indexOf将项目拼接在数组中元素的实际位置更容易.
$scope.remove = function(project){
$scope.projects.splice($scope.projects.indexOf(project),1);
}
Run Code Online (Sandbox Code Playgroud)
这样您只需要将当前项目传递给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>
Run Code Online (Sandbox Code Playgroud)
最简单的解决方案是更改删除函数以接受项目而不是索引.
$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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
示例Plunker:http://plnkr.co/edit/51SNVMQjG3dsmpYI5RyY?p = preview