Отладка $rootScope: infdig
Это обычная проблема:
5 $digest() итераций. Aborting!
Наблюдатели стреляли в последние 5 итераций: []
Документация (https://docs.angularjs.org/error/ $rootScope/infdig) объясняет, что НЕ делать, чтобы избежать ситуации.
Однако, время от времени, вы все равно оказываетесь в ситуации. И для проекта, большего, чем игрушечное приложение, найти причину бесконечного цикла дайджеста может быть очень сложно.
Я ищу отладочные подсказки о том, как я могу узнать, где находится код, который вызывает цикл.
Ответы
Ответ 1
вопрос уже был дан здесь - Устранение неполадок Angular "10 $digest() итераций, достигнутых" Ошибка
как резюме двух лучших ответов:
плюс
вы всегда можете поставить условную точку останова здесь https://github.com/angular/angular.js/blob/master/src/ng/rootScope.js#L851, чтобы проверить исключение stacktrace.
Ответ 2
Это может быть несколько причин. Одна из распространенных причин, по которым я столкнулся, связана с фильтром в ng-repeat
, который возвращает новый массив для работы с ng-repeat
.
Итак, проверьте выражения ng-repeat
, которые имеют связанные фильтры, которые изменяют массив.
Ответ 3
Для меня ошибка произошла в методе, изменяющем URL:
self.setURL = function(item) {
var mainUrl = window.location.origin + '#/' + self.baseUrl;
if (item) {
mainUrl += item.testId;
}
$location.$$absUrl = mainUrl;
};
это вызывало ошибку $rootScope:infdig
Итак, при отладке этой проверки все, что меняет ваш ur, местоположение, hrefs в вашем текущем контроллере/директиве