gpt4 book ai didi

angularjs - ng-repeat中的 Angular 无限$digest循环

转载 作者:行者123 更新时间:2023-12-04 18:36:41 26 4
gpt4 key购买 nike

我想在 ng-repeat 属性中调用函数,这是我的代码

example plnkr

html

<body ng-controller="mainCtrl">
<div ng-repeat='item in getGroupedRange() track by item.id'>
<span>{{item.val}}</span>
<span>{{item.abs}}</span>
<span>{{item.rel}}</span>
<span>{{item.cum}}</span>
</div>
</body>

js
$scope.getGroupedRange = function() {
return [
{
val: 1,
abs: 1,
rel: 1,
cum: 1,
id: 123456
}
];
};

当我打开控制台时,我注意到错误
10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: [[{"msg":"fn: function (c,d,e,f){e=a(c,d,e,f);return b(e,c,d)}","newVal":9,"oldVal":8}],[{"msg":"fn: function (c,d,e,f){e=a(c,d,e,f);return b(e,c,d)}","newVal":10,"oldVal":9}],[{"msg":"fn: function (c,d,e,f){e=a(c,d,e,f);return b(e,c,d)}","newVal":11,"oldVal":10}],[{"msg":"fn: function (c,d,e,f){e=a(c,d,e,f);return b(e,c,d)}","newVal":12,"oldVal":11}],[{"msg":"fn: function (c,d,e,f){e=a(c,d,e,f);return b(e,c,d)}","newVal":13,"oldVal":12}]]

我的代码的主要目标是使用 ng-repeat 中的函数来计算每个事件循环中的数据

最佳答案

不,您不能在 ngRepeat 中使用函数像这样。问题是 Angular 在摘要循环中使用对象的严格比较来确定自上次检查以来属性的值是否发生了变化。那么会发生什么getGroupedRange返回 新品 每次调用时的值(新数组)。 Angular 不知道并认为这个值不稳定,因此继续检查。但它在 10 次检查后中止。

您需要构造必要的数组并将其分配给 scope 属性,因此在摘要循环期间它不会更改:

$scope.groupedRange = $scope.getGroupedRange();

然后像在 ngRepeat 中一样使用它
  <div ng-repeat='item in groupedRange track by item.id'>
<span>{{item.val}}</span>
<span>{{item.abs}}</span>
<span>{{item.rel}}</span>
<span>{{item.cum}}</span>
</div>

关于angularjs - ng-repeat中的 Angular 无限$digest循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com