diff options
| author | Brad Williams | 2014-02-26 14:27:17 -0800 | 
|---|---|---|
| committer | Igor Minar | 2014-02-26 16:33:59 -0800 | 
| commit | fd09586b08cf40cedd59fe4de944000a3ebf6a59 (patch) | |
| tree | af3bb726819baa153f9b589b71eb8328756bee43 | |
| parent | 713f9758e212179c360ed8c4a460f6e66028c0a8 (diff) | |
| download | angular.js-fd09586b08cf40cedd59fe4de944000a3ebf6a59.tar.bz2 | |
docs(errors/infdig): add a common example
Mention common cause of error is binding to a new array on every $digest loop.
Closes #6465
| -rw-r--r-- | docs/content/error/$rootScope/infdig.ngdoc | 24 | 
1 files changed, 24 insertions, 0 deletions
| 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: + +``` +<div ng-repeat="user in getUsers()">{{ user.name }}</div> + +... + +$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}. | 
