uncaught rootscope:使用ng repeat时出现infdig错误

时间:2016-02-05 00:54:00

标签: angularjs

我已经尝试了一段时间,但无法解决此错误。

我在ng-repeat中调用函数parseBug。此函数修改两个字段并将它们转换为数组。当我尝试返回数组时,问题就出现了。我收到错误

  

未捕获错误:[$ rootScope:infdig]

当我尝试在控制台中打印相同的数组时,它打印没有任何问题。

我确实尝试过搜索这个问题,但我不确定摘要是如何工作的

HTML:

<a data-ng-repeat="a in parseBug(auditdata)">{{a.bugs}}<br></a>

JS:

$scope.parseBug= function (auditdata) { 

            var data = new Array ();

            var bugnumber = auditdata.bugnumber;
            var comment = auditdata.comment;
            if (bugnumber !=null || comment !=null)
                {
                    var bugs = new Array ();
                    var comm = new Array ();
                    bugs = bugnumber.substring(1,bugnumber.length-1).replace(/['"]+/g,'').split(",");
                    comm = comment.substring(1,comment.length-1).replace(/['"]+/g,'').split(",");
                    for ( i=0; i < bugs.length;i++) {

                        var dict ={};
                        dict["bugs"]= bugs[i];
                        dict["comment"]=comm[i];

                        data.push(dict);
                    }               
                }

            return data;
      };

字段在db中的显示方式:

"bugnumber" : [
                "123",
                "4567"
        ],
        "comment" : [
                "test",
                "again"
        ]

2 个答案:

答案 0 :(得分:1)

来自$rootScope / infdig

的角度文档
  

一个常见错误是绑定到生成新函数的函数   每次调用时都有数组。例如:

<div ng-repeat="user in getUsers()">{{ user.name }}</div>

...

$scope.getUsers = function() {
  return [ { name: 'Hank' }, { name: 'Francisco' } ];
};
  

由于getUsers()返回一个新数组,因此Angular确定了该数组   每个$ digest周期的模型都不同,导致错误   解决方案是返回相同的数组对象,如果元素没有   改变:

var users = [ { name: 'Hank' }, { name: 'Francisco' } ];

$scope.getUsers = function() {
  return users;
};

答案 1 :(得分:-1)

每次调用时,parseBug都会返回一个新数组。那就是问题所在。在控制器中对其进行一次评估,然后对该评估结果进行ng-repeat,或者将数组值分配给范围变量,如果尚未创建范围变量,则仅创建新数组。