Angular路由导致IE无限循环
Angular Routing Causes Infinite Loop In IE
我在 Internet Explorer 10 中查看我的代码时收到以下错误(它不一定在标准模式下呈现,由于页面的服务方式,这是我无法控制的)。
http://errors.angularjs.org/1.2.28/$rootScope/infdig
这是我用过的路由:
phoneApp.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider){
$routeProvider
.when('/sap.com~home~phonelist/pages/index.html', {
templateUrl: '/sap.com~home~phonelist/pages/landing.html',
controller: 'SearchController'
})
.when('/sap.com~home~phonelist/pages/', {
templateUrl: '/sap.com~home~phonelist/pages/landing.html',
controller: 'SearchController'
})
.when('/sap.com~home~phonelist/pages/singleEmployee/:id', {
templateUrl: '/sap.com~home~phonelist/pages/singleEmployee.html',
controller: 'SingleEmployeeController'
});
$locationProvider.html5Mode(true);
}]);
我索引中的基本 href:<base href="/" />
也是页面中唯一的重复:
<tr ng-repeat="employee in filteredEmployees = (employees | filter:search.currentFilter | orderBy:user.ordering:reverse)">
<td> <a class="fakeLink" href="singleEmployee/{{$index}}">{{ employee.name }}</a></td>
<td class="location">{{ employee.userID }}</td>
<td class="district">{{ employee.department }}</td>
<td class="jobTitle">{{ employee.jobTitle }}</td>
<td class="emailAddress">{{ employee.email }}</td>
<td class="workPhone"><a class="fakeLink" href="tel:{{employee.phone}}">{{ employee.phone }}</a></td>
</tr>
该页面在 Chrome 中加载正常,但是当我尝试在 IE 中弹出它时,没有任何加载。我检查了 ng-repeat 上的 html 以确保我没有调用创建新数组的方法。当我使用开发人员工具检查时,基本 href 似乎被无休止地调用。关于可能导致此错误的原因有什么想法吗?
这是 2 个问题的组合。第一,改变
$locationProvider.html5Mode(true);
至
$locationProvider.html5Mode(false);
评论中的 Betty 是正确的,IE 将其用于旧版本存在问题。除此之外,您还需要为 /
创建一条新路线。如果您在启动 angular 路由时遇到问题,除了 when
之外,您还可以调用 otherwise
来设置您的路由。在 angular documentation.
中有关于这种路由风格的更多信息
我在 Internet Explorer 10 中查看我的代码时收到以下错误(它不一定在标准模式下呈现,由于页面的服务方式,这是我无法控制的)。
http://errors.angularjs.org/1.2.28/$rootScope/infdig
这是我用过的路由:
phoneApp.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider){
$routeProvider
.when('/sap.com~home~phonelist/pages/index.html', {
templateUrl: '/sap.com~home~phonelist/pages/landing.html',
controller: 'SearchController'
})
.when('/sap.com~home~phonelist/pages/', {
templateUrl: '/sap.com~home~phonelist/pages/landing.html',
controller: 'SearchController'
})
.when('/sap.com~home~phonelist/pages/singleEmployee/:id', {
templateUrl: '/sap.com~home~phonelist/pages/singleEmployee.html',
controller: 'SingleEmployeeController'
});
$locationProvider.html5Mode(true);
}]);
我索引中的基本 href:<base href="/" />
也是页面中唯一的重复:
<tr ng-repeat="employee in filteredEmployees = (employees | filter:search.currentFilter | orderBy:user.ordering:reverse)">
<td> <a class="fakeLink" href="singleEmployee/{{$index}}">{{ employee.name }}</a></td>
<td class="location">{{ employee.userID }}</td>
<td class="district">{{ employee.department }}</td>
<td class="jobTitle">{{ employee.jobTitle }}</td>
<td class="emailAddress">{{ employee.email }}</td>
<td class="workPhone"><a class="fakeLink" href="tel:{{employee.phone}}">{{ employee.phone }}</a></td>
</tr>
该页面在 Chrome 中加载正常,但是当我尝试在 IE 中弹出它时,没有任何加载。我检查了 ng-repeat 上的 html 以确保我没有调用创建新数组的方法。当我使用开发人员工具检查时,基本 href 似乎被无休止地调用。关于可能导致此错误的原因有什么想法吗?
这是 2 个问题的组合。第一,改变
$locationProvider.html5Mode(true);
至
$locationProvider.html5Mode(false);
评论中的 Betty 是正确的,IE 将其用于旧版本存在问题。除此之外,您还需要为 /
创建一条新路线。如果您在启动 angular 路由时遇到问题,除了 when
之外,您还可以调用 otherwise
来设置您的路由。在 angular documentation.