【问题标题】:AngularJS OrderBy update source arrayAngularJS OrderBy 更新源数组
【发布时间】:2016-05-17 14:31:40
【问题描述】:

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

有人知道如何实现这一目标吗?

谢谢。

附: 如果有任何改变,我将使用 AngularJS 1.3.14。

【问题讨论】:

  • ng-repeat 不会影响数组,只会影响显示的内容。如果您希望对实际数组进行排序,则需要在控制器中进行。
  • 你能展示你的代码吗?

标签: angularjs sorting angularjs-orderby


【解决方案1】:

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

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

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

更多关于这个过滤器的信息可以在here找到。

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

【讨论】:

  • 感谢这也有帮助。
【解决方案2】:

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

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

在 DOM 中

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

【讨论】:

  • 非常感谢帮助
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多