我已经尝试了一段时间,但无法解决此错误。
我在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"
]
答案 0 :(得分:1)
一个常见错误是绑定到生成新函数的函数 每次调用时都有数组。例如:
<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,或者将数组值分配给范围变量,如果尚未创建范围变量,则仅创建新数组。