10 $digest() достигнуты итерации. Aborting! при использовании $locationProvider.html5Mode(true);

Я использую Angular.js на IE8,

Я собираюсь: "10 $digest() iterations reached. Aborting!" Ошибка выполнения при использовании$locationProvider.html5Mode(true);"на моем контроллере.

Мой код:

angular.module('MyApp', [], function ($routeProvider, $locationProvider) {    
    $routeProvider.when('/Get', {
        templateUrl: 'Template/T1.html',
        controller: RouteCtrl
    });
    $routeProvider.when('/GetT2/T2', {
        templateUrl: 'Template/T2.html',
        controller: RouteCtrl
    });

    $locationProvider.html5Mode(true);
});


function MainCntl($scope, $route, $routeParams, $location) {
    $scope.$route = $route;
    $scope.$location = $location;
    $scope.$routeParams = $routeParams;
    $scope.$location.path('/Get');
}

function RouteCtrl($scope, $route) {
    $scope.params = $route;
}

ОБНОВИТЬ:

T1 и T2 не содержат ничего, связанного с угловым.

T1.html:

<h1>T1</h1>
<p>T1</p>

T2.html:

<h1>T2</h1>
<p>T2</p>

Вот где я использую свой контроллер:

<div id="content" ng-controller="MainCntl">          
           <div ng-view></div>           
        </div>

2 ответа

Я не знаю, насколько это актуально для вашей проблемы, но у нас были те же симптомы, также из режима html5. Мы были вручную загружены, а также во время этого процесса добавления class="ng-app" к элементу HTML. Это вызвало запуск двух угловых экземпляров, один из которых мы настроили (с включенным html5mode), а другой - с настройками по умолчанию.

Таким образом, два экземпляра будут бороться за содержание $location и это никогда не достигнет равновесия.

Решение состояло в том, чтобы гарантировать, что элемент html является "нетронутым", когда мы загружаем вручную.

Примечание: мы используем require.js, и это стало особенно заметно с асинхронной загрузкой элементов.

Я предполагаю, что вы где-то попали в бесконечный цикл.

Я собираюсь сделать некоторые предположения, потому что нет HTML-кода для меня, чтобы увидеть, как размещаются контроллеры, но это должно дать вам представление о том, что нужно искать.

Я собираюсь предположить, что templateUrl: 'Template/T1.html', содержит MainCntl,

На странице загрузки ваш $scope.$location.path('/Get'); вызывается внутри MainCntl,

Такая ситуация может вызвать цикл - каждый раз, когда загружается страница, вы загружаете контроллер, который меняет местоположение на ту же страницу, которая загружает контроллер... и т. Д. И т. Д.

10 $digest() iterations reached. Aborting! происходит от таких петель.

Другие вопросы по тегам