如何解决错误:[$ rootScope:infdig]?

时间:2017-03-27 13:37:55

标签: angularjs

当我在ul和li中使用ng-repeats时,我收到了错误。

这是我的HTML代码:

 <ul>
        <li ng-repeat="(key, value) in (myData | groupBy: 'id')">
            {{key}}
            <ul>
                <li ng-repeat="details in value">
                    {{details.name}}
                </li>
            </ul>
        </li>
    </ul>

JS代码:

.filter('groupBy', function () {
return function (data, key) {

    var result = {};
    for (var i = 0; i < data.length; i++) {
        if (!result[data[i][key]])
            result[data[i][key]] = [];
        result[data[i][key]].push(data[i])
    }
    alert(JSON.stringify(result));
    return result;
};
});

这些是我得到的错误

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试将track by $index放入ng-repeat中,如下所示:

<ul>
    <li ng-repeat="(key, value) in myData track by id">
        {{key}}
        <ul>
            <li ng-repeat="details in value">
                {{details.name}}
            </li>
        </ul>
    </li>
</ul>

如果您在数组

中有重复项,也可以track by $index
<li ng-repeat="(key, value) in myData track by $index">

答案 1 :(得分:0)

无限摘要是由每次运行函数时返回新结果的过滤器引起的。您必须重写该函数,以便它直接修改原始0 1 2 3 4 1 1 2 3 4 2 1 2 3 4 3 1 2 3 4 ⬅ 参数,并再次返回data参数。