加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – angular-infinite $digest循环在ng-repeat中

发布时间:2020-12-17 07:51:29 所属栏目:安全 来源:网络整理
导读:我想在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
我想在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,f);return b(e,c,d)}","newVal":9,"oldVal":8}],[{"msg":"fn: function (c,"newVal":10,"oldVal":9}],"newVal":11,"oldVal":10}],"newVal":12,"oldVal":11}],"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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读