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 应该能够调用这个函数两次,并且两次得到相同的结果。像这样的表达式不能有副作用。
我不明白你想通过这样做达到什么目的,所以很难说你应该怎么做。
我正在使用 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 应该能够调用这个函数两次,并且两次得到相同的结果。像这样的表达式不能有副作用。
我不明白你想通过这样做达到什么目的,所以很难说你应该怎么做。