我按日期使用内置的角度过滤器OrderBy到我的项目,它在DOM中按预期工作但我认为它会更新数组本身,所以我可以使用项目的新顺序。
任何人都有任何想法如何实现这一目标?
感谢。
P.S。 如果改变了什么,我会使用AngularJS 1.3.14。
答案 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。
当然,如果您的排序表达式是动态的,那么每次更改时都必须更新数组的引用,这并不总是理想的,但对于少量数据来说绝对可行。