angularjs中的模板递归限制(摘要循环)

时间:2014-02-22 18:51:47

标签: angularjs recursion angularjs-scope

我使用递归模板在angularJS中渲染树,但是当树深度超过10时,AngularJS在控制台上给出了一个错误:

"Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

this plnkr中的示例。

如果我理解正确并尝试在其上加上简单的词语(我知道它更复杂):

  • 在第一个$ digest()迭代中,它包含第一个模板,因此在item上创建了一个ŵatcher(实际上在item.IDitem.children
  • 然后,不是递归地包含模板并在之后创建观察者,它首先要检查item.children,并使用--ttl
  • 重新执行摘要循环
  • 然后两个值都是相同的,所以它继续并包含下一个模板并在新item上设置一个观察者,然后返回第二步

因此在10次迭代之后,ttl将为0,因此错误,尽管没有实际错误......

所以,有几个问题:

  • 我的分析是否正确?
  • 我应该在角度跟踪器上报告这个(因为我认为在报告错误时角度是错误的)?
  • 有一个简单的解决方法吗?

非常感谢!

修改

This plnkr(因为raw.github而需要用firefox看到)表明bindonce不是解决方案...

2 个答案:

答案 0 :(得分:4)

这显然是AngularJS的一个已知问题,唯一的解决方法并不令人满意,请参阅this issue

答案 1 :(得分:1)

在自从删除(为什么?)评论后,有人指出this thread如果深度已知,则有解决方法。 This plnkr显示它在工作。这不太令人满意,但这是一个可能的答案......