AngularJS OrderBy更新源数组

时间:2016-05-17 14:31:40

标签: angularjs sorting angularjs-orderby

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

任何人都有任何想法如何实现这一目标?

感谢。

P.S。 如果改变了什么,我会使用AngularJS 1.3.14。

2 个答案:

答案 0 :(得分:2)

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

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

在DOM中

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

答案 1 :(得分:2)

过滤器返回数组的已排序副本,因此您只需将其分配给范围并保留已排序数组的引用。

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

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

有关此过滤器的更多信息,请访问here

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