of-repeat 迭代太多

ng-repeat too many iterations

我正在使用 angular-meteor 并且想对每个对象执行一个函数。我在视图中的 ng-repeat 中尝试了 运行 这个函数,但是我收到了大量的函数调用并且无法弄清楚原因。我试图让它尽可能简单地演示正在发生的事情。

constructor($scope, $reactive) {
    'ngInject';
    $reactive(this).attach($scope);
    this.loaderCount = 0;

    this.helpers({
        loaders() {
            return Loaders.find( {isloader:true}, {sort: { name : 1 } })
        }
    });

这给了我 26 个装载机。我的函数只是在每次调用函数时将计数加 1:

displayLoaderCount()
{
    return ++this.loaderCount;
}

现在在我看来,我正在遍历每个加载器,并调用该函数。在我看来这应该是 26,但我得到的是 3836。

 <tr ng-repeat="loader in loaderExhaustion.loaders">
        <td>{{loaderExhaustion.displayLoaderCount()}}</td>

谁能帮我解释一下?理想情况下,我想遍历模块中的内容,但由于集合是异步的,当循环开始时集合的长度为 0,因此我在视图中进行调用的原因。

谢谢!

每次angular进入一个变化检测周期,它计算loaderExhaustion.displayLoaderCount(),知道这个表达式的结果是否已经改变,如果有就更新DOM。这个函数改变了控制器的状态(因为它增加了this.loaderCount),从而触发了一个额外的变化检测循环,它重新评估表达式,改变了控制器的状态,等等

你不能改变这样的表达式中的状态。对于一个给定的状态,angular 应该能够调用这个函数两次,并且两次得到相同的结果。像这样的表达式不能有副作用。

我不明白你想通过这样做达到什么目的,所以很难说你应该怎么做。