angularjs – 达到10 $digest()迭代次数.中止!当使用$locationProvider.html5Mode(true)时;

我在IE8上使用angular.js.

我得到了:“10 $digest()迭代达到了.堕胎!”使用“$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>

最佳答案 我不知道这对你的问题有多重要,但我们也有同样的症状,也来自html5模式.我们手动引导,并且在此过程中将class =“ng-app”添加到html元素.这导致两个角度实例运行,一个是我们配置的(启用了html5mode),另一个是默认设置.

因此,这两个实例将争夺$location的内容,它永远不会达到平衡.

解决方案是确保在我们手动引导时html元素是“原始的”.

注意:我们使用的是require.js,它在异步加载元素时变得特别明显.

点赞