随机orderBy在ng-repeat中返回[$ rootScope:infdig]错误

时间:2017-01-25 10:51:12

标签: javascript angularjs angularjs-ng-repeat

我有大量的对象,我用ng-repea打印,在dom中无限制地随机播放,任何快速的解决方案都将受到赞赏。

以下是HMTL:

ng-repeat="_video in return_array_for_ngrepeat() | orderBy: random" 

我的$rootScope功能:

 $rootScope.return_array_for_ngrepeat = function () {
    return _.values(data[102]);
}

$rootScope.random = function () {
    return 0.5 - Math.random();
}

1 个答案:

答案 0 :(得分:1)

为什么会发生此错误?

你对random()进行了很多调用,Angular将继续评估表达式,直到它达到10次摘要迭代的极限。这是导致错误的原因。

如何解决?

您必须在模板外设置随机订单,例如在您的控制器中。

angular.forEach($rootScope.list, function(item) {
    $rootScope.randomizedList.push({
        item: item,
        rank: 0.5 - $window.Math.random()
    });
});

您现在可以遍历randomizedList数组。

<p ng-repeat="i in randomizedList | orderBy:'rank'">{{i.item}</p>

JSFiddle demo