ng-repeat:达到 10 次 $digest() 迭代
Posted
技术标签:
【中文标题】ng-repeat:达到 10 次 $digest() 迭代【英文标题】:ng-repeat: 10 $digest() iterations reached 【发布时间】:2016-09-25 16:22:02 【问题描述】:假设您有一个非常大的导航,大约有 15 个嵌套级别,例如:
var app = angular.module("myApp", []);
app.controller("HomeCtrl", ["$scope", function($scope)
this.entries = [
"title": "test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test",
"entries": [
"title": "sub-test"
]
]
]
]
]
]
]
]
]
]
]
]
];
return this;
]);
您正在使用ng-repeat
迭代这些:
<script type="text/ng-template" id="entryTree">
<span> entry.title </span>
<ol ng-if="entry.entries">
<li ng-repeat="entry in entry.entries" ng-include="'entryTree'"></li>
</ol>
</script>
<div ng-controller="HomeCtrl as ctrl">
<ol>
<li ng-repeat="entry in ctrl.entries" ng-include="'entryTree'"></li>
</ol>
</div>
Demo
然后会抛出$rootScope:infdig
错误:10 $digest() iterations reached. Aborting!
。我知道这里有几个类似的问题(例如this one)。但就我而言,我没有从控制器返回动态值,也没有使用动态 getter,我只是将值静态保存在控制器中。
这是什么原因?解决方案会是什么样子?
【问题讨论】:
【参考方案1】:由于 ng-include,模板的每次迭代都会导致新的摘要循环。当一个摘要循环导致另一个摘要循环并以这种方式循环 10 次时,angular 会假设它可能是一个无限循环并引发错误。
【讨论】:
谢谢。您有解决方案的参考吗? 没有指令就没有办法,就像我的模板示例一样? 可以这样:groups.google.com/forum/#!topic/angular/Fn8ujAx2OP4以上是关于ng-repeat:达到 10 次 $digest() 迭代的主要内容,如果未能解决你的问题,请参考以下文章
Angular - 达到 10 次 $digest() 迭代。创建数组的深层副本时中止
初始化变量一次以防止“达到 10 个 $digest() 迭代”
使用 angular 指令会导致错误:达到 10 次 $digest() 迭代。中止