为什么我在执行ng-include后会在angularJS中出现此错误?

时间:2017-03-27 11:32:55

标签: javascript jquery html angularjs

我决定模块化html并将其中的一部分放在其他HTML中。

<div ng-include="'file.html'"></div>

当我运行应用程序时,会加载file.html文件,但在控制台中我收到此错误:

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

我不知道出了什么问题。

这里的所有错误:

angular.min.js:1 Uncaught Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Watchers fired in the last 5 iterations: []
http://errors.angularjs.org/1.3.9/$rootScope/infdig?p0=10&p1=%5B%5D
    at angular.min.js:1
    at l.$digest (angular.min.js:3)
    at l.$apply (angular.min.js:3)
    at g (angular.min.js:2)
    at x (angular.min.js:2)
    at XMLHttpRequest.m.onload (angular.min.js:2)
(anonymous) @ angular.min.js:1
$digest @ angular.min.js:3
$apply @ angular.min.js:3
g @ angular.min.js:2
x @ angular.min.js:2
m.onload @ angular.min.js:2

4 个答案:

答案 0 :(得分:1)

确保您在ngInclude中引用的路径有效,否则您将获得无限的摘要循环。

答案 1 :(得分:1)

当.html文件的路径不正确时会触发此错误。所以检查文件是否可用,是否在正确的位置。

答案 2 :(得分:1)

您所包含的文件包含产生不可重复结果的代码。

AngularJS将尝试两次计算所有观察的表达式。如果结果不同,它将继续一次又一次地计算它们,直到它连续两次得到相同的东西。

此错误表示某些可观察代码在10个调用限制期间未产生两次相同的结果。例如,如果监视表达式使用返回随机结果或突变内部状态的函数,则会发生这种情况。确保所有观察到的表达式(包括指令表达式)都是纯粹的,即。不要影响应用程序的内部状态,只能获取值。

答案 3 :(得分:0)

找出应用程序的哪个部分导致此行为的最快解决方案是:

1.删除所有可疑HTML - 基本上从模板中删除所有html,并检查是否没有警告

2.如果没有警告 - 添加你删除的html的一小部分并检查问题是否已经恢复

3.重复步骤2直到你收到警告 - 你会发现你的html的哪一部分是导致问题的原因

4.进一步调查 - 第3步中的部分负责改变$ scope上的对象,或者在每个$ digest周期返回不相同的对象。

5.如果您在步骤1之后仍然有$ digest迭代警告,那么您可能正在做一些非常可疑的事情。对父模板/范围/控制器重复相同的步骤

您还需要确保不要更改自定义过滤器的输入

请记住,在JavaScript中,有一些特定类型的对象不像您通常期望的那样:

new Boolean(true) === new Boolean(true) // false
new Date(0) == new Date(0) // false
new String('a') == new String('a') // false
new Number(1) == new Number(1) // false
[] == [] // false
new Array == new Array // false
({})==({}) // false

并检查此

<ng-include src=" 'pathto/file.html' "></ng-include>