Error: 10 $digest() iterations reached. Aborting! with dynamic sortby predicate Error: 10 $digest() iterations reached. Aborting! with dynamic sortby predicate angularjs angularjs

Error: 10 $digest() iterations reached. Aborting! with dynamic sortby predicate


Please check this jsFiddle. (The code is basically the same you posted but I use an element instead of the window to bind the scroll events).

As far as I can see, there is no problem with the code you posted. The error you mentioned normally occurs when you create a loop of changes over a property. For example, like when you watch for changes on a certain property and then change the value of that property on the listener:

$scope.$watch('users', function(value) {  $scope.users = [];});

This will result on an error message:

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

Make sure that your code doesn't have this kind of situations.

update:

This is your problem:

<div ng-init="user.score=user.id+1"> 

You shouldn't change objects/models during the render or otherwise, it will force a new render (and consequently a loop, which causes the 'Error: 10 $digest() iterations reached. Aborting!').

If you want to update the model, do it on the Controller or on a Directive, never on the view. angularjs documentation recommends not to use the ng-init exactly to avoid these kinds of situations:

Use ngInit directive in templates (for toy/example apps only, not recommended for real applications)

Here's a jsFiddle with a working example.


The cause of this error for me was...

ng-if="{{myTrustSrc(chat.src)}}"

in my template

It causes the function myTrustSrc in my controller to be called in an endless loop. If I remove the ng-if from this line, then the problem is solved.

<iframe ng-if="chat.src" id='chat' name='chat' class='chat' ng-src="{{myTrustSrc(chat.src)}}"></iframe>

The function is only called a few times when ng-if isn't used. I still wonder why the function is called more than once with ng-src?

This is the function in the controller

$scope.myTrustSrc = function(src) {    return $sce.trustAsResourceUrl(src);}


For me it was that I was passing a function result as 2-way binding input '=' to a directive that was creating a new object every time.

so I had something like that:

<my-dir>   <div ng-repeat="entity in entities">      <some-other-dir entity="myDirCtrl.convertToSomeOtherObject(entity)"></some-other-dir>   </div></my-dir>

and the controller method on my-dir was

this.convertToSomeOtherObject(entity) {   var obj = new Object();   obj.id = entity.Id;   obj.value = entity.Value;   [..]   return obj;}

which when I made to

this.convertToSomeOtherObject(entity) {   var converted = entity;   converted.id = entity.Id;   converted.value = entity.Value;   [...]   return converted;}

solved the problem!

Hopefully this will help someone :)