我使用递归模板在angularJS中渲染树,但当树深度超过10时,AngularJS在控制台上给出了一个错误:
"Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
例如this plnkr.
如果我理解正确并试着在上面加上简单的话(我知道它更复杂):
>在第一个$digest()迭代中,它包含第一个模板,从而在项目上创建一个ŵatcher(实际上在item.ID和item.children上)
>然后,不是递归地包含模板并在之后创建观察者,它首先要检查item.children,并使用–ttl重新运行摘要循环
>然后两个值都是相同的,所以它继续并包含下一个模板并在新项目上设置观察者,然后返回第二步
因此,在10次迭代之后,ttl将为0,因此错误,尽管没有实际错误……
那么,有几个问题:
>我的分析是否正确?
>我应该在角度跟踪器上报告这个(因为我认为报告错误时角度是错误的)?
>有一个简单的解决方法吗?
非常感谢你!
编辑:
This plnkr(由于raw.github你需要用firefox看到)表明bindonce不是这个的解决方案……
解决方法
这显然是AngularJS的一个已知问题,唯一的解决方法并不令人满意,见
this issue.