我不确定以前的版本,但是在当前版本中,在作用域上监视的任何表达式(例如传递给的表达式
ng-repeat)通常每个摘要至少评估两次。仅当两次连续求值之间在整个Angular应用程序的所有范围内所有求值表达式的结果相同时,摘要循环才结束。
因为每次评价
<li ng-repeat="i in list | orderBy:random">{{i}}</li>导致对random()的调用,并且顺序不同,然后Angular将继续评估表达式,直到达到10次摘要迭代的极限并引发错误。
解决方案是在控制器中的模板外部设置顺序:
$scope.list = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];$scope.rankedList = [];angular.forEach($scope.list, function(item) { $scope.rankedList.push({ item: item, rank: 0.5 - $window.Math.random() });});然后通过类似以下命令使用该字段:
<li ng-repeat="i in rankedList | orderBy:'rank'">{{i.item}}</li>这可以在jsfiddle中看到。



