#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. Документы не смогли решить мою проблему, поэтому я пришел сюда. Прошу прощения, но это не помогает.