14

This is a common problem:

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

The documentation (https://docs.angularjs.org/error/$rootScope/infdig) explains what NOT to do to avoid the situation.

However, once in a while, you end up in the situation anyway. And for a project larger than a toy app, finding the cause of the infinite digest loop can be really hard.

I'm looking for debugging hints on how I can find out where the code is located which causes the loop.

4 Answers 4

11
+300

This question was already answered here.

As a combination of the two best answers:

  1. Remove all suspicious HTML. Remove all your HTML from the template, and check if there are no warnings. See this answer
  2. It can also happen when a function returns a new object. See this answer

Additionally, you can always put a conditional breakpoint to check the exception stack trace.

Sign up to request clarification or add additional context in comments.

1 Comment

In my case the problem was that there was no infinite loop at all, as i made sure to always return the same object reference. I have detailed how to debug that in an answer on the linked question. This case is quite rare though...
2

There can be multiple reasons to it. One of the common reason I've faced is due to a filter in the ng-repeat which returns a new array to work on the ng-repeat.

So check your ng-repeat expressions which have associated filters which is modifying the array.

Comments

0

For me the error was happening in a method changing the url:

 self.setURL = function(item) { var mainUrl = window.location.origin + '#/' + self.baseUrl; if (item) { mainUrl += item.testId; } $location.$$absUrl = mainUrl; }; 

this was causing the $rootScope:infdig error

So when debugging this check whatever is changing your ur, location, hrefs in your current controller/directive

Comments

0

For me the error was happening in a method changing the url:

> self.setURL = function(item) { > > >//Ajax call followed by promise function > servicejsfile.somefunctiom(transferObj).then(responce){ > > var somethingTrue=responce.featureAvailable; >if (somethingTrue) { > dothis(); >}else > $window.location = newlocation; > }; 

This change the last portion of URL of my application. this was causing the $rootScope:infdig error

So when debugging this, I commented out this portion, and error was not repeated along with requirement of application also changed.

I am not able to fix this so we requirement remains same and I can change the location.

This issue is taking place from some a Ajax call inside a funtion of a controller, and only in IE For FF , chrome and safari it is behaving perfect as JavaScript engine is faster for these browsers.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.