nest ng-repeat会产生比预期更多的项目

时间:2015-02-05 01:45:30

标签: angularjs angularjs-ng-repeat

主要想法:

我想将bootstrap网格系统与角度ng-repeat

结合起来

方法:

我使用过滤器来重新格式化json数据(包含大量对象的数组),就像codepen项目一样:

http://codepen.io/maggiben/pen/sfCnq ``` filter('listToMatrix',function(){     return function listToMatrix(list,elementsPerSubArray){

    var matrix = [], i, k;
    console.log("hellowrld")
    for (i = 0, k = -1; i < list.length; i++) {
        if (i % elementsPerSubArray === 0) {
            k++;
            matrix[k] = [];
        }

        matrix[k].push(list[i]);
    }

    return matrix;
};

});

enter image description here

这是我的玉页代码:

enter image description here

我的控制器代码:获取新闻。 enter image description here

问题是我在页面上有更多项目: enter image description here

1 个答案:

答案 0 :(得分:0)

此错误表示角度无法完成摘要周期。它的原因来自你的过滤器:每当角度将过滤器应用到你的列表中时,就会创建一个新矩阵,因此angular将继续调用过滤器,直到它返回的内容与前一次迭代(从未发生过)相同。 / p>

要修复它,您可以使用ng-repeat ... track by items.someProperty跟踪矩阵的项目,因此在连续两次调用过滤器后,angular会检测到此someProperty没有更改并将完成循环

修复它的另一种方法是为给定列表缓存过滤器的结果,因此下次使用相同列表对您的过滤器进行角度调用时,您将返回指向同一矩阵的指针。

有关更多讲座,您可以参考此问题(同一问题):Angular filter works but causes "10 $digest iterations reached"