我是Angular.js的新手,在排序数组和处理排序后的数据时遇到一些问题。
我有一个包含项目的列表,并希望按“ Store.storeName”对其进行排序,到目前为止,该列表仍然有效。但是在对数据排序之后,我的删除功能不再起作用。我认为那是因为排序后$ index错误,因此删除了错误的数据。
我该如何解决?在范围内而不是在视图中排序数据?怎么做?
这是一些相关的代码:
在视图中:
<tr ng-repeat="item in items | orderBy:'Store.storeName'"> <td><input class="toggle" type="checkbox" ng-model="item.Completed"></td> <td>{{item.Name}}</td> <td>{{item.Quantity}} Stk.</td> <td>{{item.Price || 0 | number:2}} €</td> <td>{{item.Quantity*item.Price|| 0 | number:2}} €</td> <td>{{item.Store.storeName}}</td> <td><a><img src="img/delete.png" ng-click="removeItem($index)">{{$index}}</a></td> </tr>
在我的控制器中,我具有此删除功能,该功能应删除特定数据:
$scope.removeItem = function(index){ $scope.items.splice(index,1); }
在视图中订购之前,这种方法效果很好。如果缺少重要的东西,请让我现在。
谢谢!
取而代之或中继$index-如您所注意到的-将指向已排序/过滤后的数组中的索引,您可以将该项本身传递给removeItem函数:
$index
removeItem
<a><img src="img/delete.png" ng-click="removeItem(item)">{{$index}}</a>
并removeItem使用indexOf数组方法修改该函数以找到索引,如下所示:
indexOf
$scope.removeItem = function(item){ $scope.items.splice($scope.items.indexOf(item),1); }