From fd09586b08cf40cedd59fe4de944000a3ebf6a59 Mon Sep 17 00:00:00 2001 From: Brad Williams Date: Wed, 26 Feb 2014 14:27:17 -0800 Subject: docs(errors/infdig): add a common example Mention common cause of error is binding to a new array on every $digest loop. Closes #6465 --- docs/content/error/$rootScope/infdig.ngdoc | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'docs/content/error') diff --git a/docs/content/error/$rootScope/infdig.ngdoc b/docs/content/error/$rootScope/infdig.ngdoc index e36f1d69..d6261df1 100644 --- a/docs/content/error/$rootScope/infdig.ngdoc +++ b/docs/content/error/$rootScope/infdig.ngdoc @@ -14,4 +14,28 @@ $scope.$watch('foo', function() { }); ``` +One common mistake is binding to a function which generates a new array every time it is called. For example: + +``` +
{{ user.name }}
+ +... + +$scope.getUsers = function() { + return [ { name: 'Hank' }, { name: 'Francisco' } ]; +}; +``` + +Since `getUsers()` returns a new array, Angular determines that the model is different on each `$digest` +cycle, resulting in the error. The solution is to return the same array object if the elements have +not changed: + +``` +var users = [ { name: 'Hank' }, { name: 'Francisco' } ]; + +$scope.getUsers = function() { + return users; +}); +``` + The maximum number of allowed iterations of the `$digest` cycle is controlled via TTL setting which can be configured via {@link ng.$rootScopeProvider $rootScopeProvider}. -- cgit v1.2.3