由于 angularjs 中的 ng-repeat 导致的错误

Posted

技术标签:

【中文标题】由于 angularjs 中的 ng-repeat 导致的错误【英文标题】:error because of ng-repeat in angularjs 【发布时间】:2013-01-08 03:39:47 【问题描述】:

我使用嵌套的 ng-repeat 在 html 页面中显示我的数据。

报错了

Error: Error: 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations

但是这个错误不会影响我的功能。我正在寻找这个问题的答案,但我没有得到正确的答案,所以我在这里发布了这个问题。

我不知道我的 json 数据结构是否会导致此错误,但我无法更改其结构。

这是我的示例 json 数据

    //In controller
for (var i = 1; i <= 31; i++) 
$scope.daysofmonth.push(day:i);    // daysofmonth.day->1,2,3...

for(var j=0; j<$scope.daysofmonth.length; j++) 
$scope.daysofmonth[j].events = [     // creating 31 arrays for events
    "name":"T", "count":0,"data":[
         "startDate":"01/25/2013",
         "startTime":"00:00",
         "endDate":"01/26/2013",
         "endTime":"00:00",
         "type":"m",
         "status":"Not Started",
         "title":"Demo to Client",
         "description":"Application demo"
             ],
    "name":"I", "count":0,"data":[...] // same as previous
    ];
 //left some of the business logic


    //In html file
    <div class="box | today:year+'-'+month+'-'+dayofmonth.day:dayofmonth.day"  ng-repeat="dayofmonth in daysofmonth" >
    <span class="days"> dayofmonth.day </span>
    <span class="events-list">
            <div ng-repeat="eve in dayofmonth.events" >   
                 eve.count + eve.name  
        </div>
    </span>
    </div>

谁能告诉我导致此错误的原因以及如何解决?

【问题讨论】:

你能发一个 jsfiddle 吗? "data" 应该是 ["num1", "2"] 还是 "num1": "2",因为您拥有的不是有效的 javascript。您还说您使用了 4 个 ng-repeats,但只显示了两个。请发布更多代码。 查看$scope.data 结构,在嵌套的ng-repeat 中,getdata 对象并不总是具有num1 的键。不确定这是否是从发布到 SO 的翻译错误,但无论哪种方式,我们都可以使用更多代码来工作。 正如 Mark Rajcok 所指出的,您的数据数组是错误的。 @Prashanth 我们真的需要一个 jsfiddle 或 plunker,这样我们就可以查看您运行的代码并在上下文中查看错误。 【参考方案1】:

该 JSON 无效。此外,您的模板不会输出任何可见的内容,除非您在转发器中放置一些绑定标签,例如 Company.Company.id

【讨论】:

【参考方案2】:

正如其他人已经说过的,数据是无效的。虽然它可能是有效的 JSON,但它不是有效的 javascript。我根据数据结构创建了一个 plunker 示例,并已清理为有效的 javascript,并且嵌套的 ng 重复没有任何错误。

当然,只有两个,因为这就是您在上面的代码 sn-p 中显示的全部内容。但它适用于这两个,并且应该同样适用于额外的嵌套重复。

http://plnkr.co/edit/z36YclsngdX9HozgdUkQ?p=preview

【讨论】:

【参考方案3】:

这可能是因为您正在 ng-repeat 内的视图中初始化对象。因此,我遇到了类似的问题。请看这个链接

Error: 10 $digest() iterations reached. Aborting! with dynamic sortby predicate

【讨论】:

以上是关于由于 angularjs 中的 ng-repeat 导致的错误的主要内容,如果未能解决你的问题,请参考以下文章

angularJS中的ng-repeat指令!

ng-repeat中的Angularjs分页

AngularJs 使用自定义 Json 中的 ng-repeat 创建表

AngularJS中带有ng-repeat范围的指令隔离范围

如何使用AngularJS从ng-repeat中的数组中删除对象?

如何限制angularjs ng-repeat中的对象?