4

我正在使用 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>
4

2 回答 2

2

我不知道这与您的问题有多相关,但我们有相同的症状,也来自 html5 模式。我们手动引导,并在此过程中添加class="ng-app"到 html 元素。这导致两个角度实例运行,一个是我们配置的(打开 html5mode),另一个是默认设置。

所以这两个实例会争夺内容,$location并且永远不会达到平衡。

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

注意:我们使用的是 require.js,它在元素的异步加载中变得尤为明显。

于 2013-07-30T22:52:41.913 回答
0

我猜你在某处遇到了无限循环。

我将做一些假设,因为没有 html 代码可供我查看控制器的放置方式,但这应该让您知道要注意什么。

我假设,其中templateUrl: 'Template/T1.html',包含一个MainCntl.

在页面加载时,你$scope.$location.path('/Get');被调用 inside MainCntl

这种情况会导致循环 --- 每次页面加载时,您正在加载一个控制器,该控制器正在将位置更改为同一页面,该页面正在加载控制器......等等。

10 $digest() iterations reached. Aborting!来自这些类型的循环。

于 2013-06-17T19:40:15.663 回答