Ошибка: $rootScope: infdig бесконечный цикл $digest

#angularjs #git

#angularjs #git

Вопрос:

Мы с другом работали над веткой git, отличной от master, с именем userSummary . Сегодня утром мой друг объединил ветку с master после внесения некоторых изменений, но не удалил userSummary ветку. Я изменил свою ветку с userSummary на master и потянул master . Теперь мое веб-приложение показывает некоторую ошибку корневой области. И он ведет себя странным образом. Ошибка

 Error: [$rootScope:infdig] http://errors.angularjs.org/1.4.8/$rootScope/infdig?p0=10amp;p1=%5B%5B%7B"ms…2%2C"oldVal"%3A"%5C"2016-10-13T09:31:36.003Z%5C""%7D%5D]  
  

Я долгое время боролся с этим. Буду признателен за любую помощь.

Ответ №1:

Как видно из документации:

Эта ошибка возникает, когда модель приложения становится нестабильной, и каждый $digest цикл вызывает изменение состояния и последующий $digest цикл. Angular обнаруживает эту ситуацию и предотвращает бесконечный цикл, из-за которого браузер перестает отвечать.

Например, ситуация может возникнуть при настройке наблюдения за путем и последующем обновлении того же пути при изменении значения.

 $scope.$watch('foo', function() {
  $scope.foo = $scope.foo   1;
});
  

Одной из распространенных ошибок является привязка к функции, которая генерирует новый массив при каждом вызове. Например:

 <div ng-repeat="user in getUsers()">{{ user.name }}</div>

...

$scope.getUsers = function() {
  return [ { name: 'Hank' }, { name: 'Francisco' } ];
};
  

Поскольку getUsers() возвращает новый массив, Angular определяет, что модель отличается в каждом цикле $digest, что приводит к ошибке. Решение состоит в том, чтобы вернуть тот же объект массива, если элементы не изменились:

 var users = [ { name: 'Hank' }, { name: 'Francisco' } ];

$scope.getUsers = function() {
  return users;
};
  

Максимальное количество разрешенных итераций $digest цикла контролируется с помощью параметра TTL, который можно настроить с помощью $rootScopeProvider .

Комментарии:

1. Документы не смогли решить мою проблему, поэтому я пришел сюда. Прошу прощения, но это не помогает.