Я с другом работал над веткой git, кроме мастера, с именем userSummary
. Сегодня утром мой друг объединил ветку с мастером после внесения некоторых изменений, но не удалил ветку userSummary
. Я изменил свою ветку с userSummary
чтобы master
и сделал потянуть на master
. Теперь мое веб-приложение показывает некоторую ошибку в корневой области. И это ведет себя странно. Ошибка
Error: [$rootScope:infdig] http://errors.angularjs.org/1.4.8/$rootScope/infdig?p0=10&p1=%5B%5B%7B%22ms…2%2C%22oldVal%22%3A%22%5C%222016-10-13T09%3A31%3A36.003Z%5C%22%22%7D%5D%5D
Я долгое время боролся с этим. Любая помощь будет оценена по достоинству.
Как видно из документов:
Эта ошибка возникает, когда модель приложения становится нестабильной, и каждый цикл $digest
вызывает изменение состояния и последующий цикл $digest
. Угловая обнаруживает эту ситуацию и предотвращает бесконечный цикл, чтобы браузер не реагировал.
Например, ситуация может возникнуть путем настройки часов на пути и последующего обновления одного и того же пути при изменении значения.
$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.