AngularJS OrderBy更新源数组

AngularJS OrderBy update source array

我正在使用内置的 Angular 过滤器 OrderBy 按日期过滤我的项目,它在 DOM 中按预期工作,但我认为它会更新数组本身所以我可以工作随着物品的新顺序。

有人知道如何实现吗?

谢谢。

P.S。 如果有任何变化,我正在使用 AngularJS 1.3.14。

在将数组绑定到 DOM 之前,您应该从控制器重新排序数组。这也更高效,因为 Angular 不需要在每个摘要周期重新计算顺序。

$scope.myOrderedArray = order( $scope.myArray );

并且在 DOM

<div ng-repeat="item in myOrderedArray"> ... </div>

过滤器 returns 数组的排序副本,因此您可以将其分配给您的范围并保存排序数组的引用。

您可以在控制器中注入 $filter 服务,然后像这样以编程方式使用它:

var orderBy = $filter('orderBy');
$scope.array = orderBy(unsortedArray, expression);

可以找到有关此过滤器的更多信息 here

当然,如果您的排序表达式是动态的,那么您将不得不在每次更改时更新数组的引用,这并不总是理想的,但对于较小的数据量来说绝对可行。