【发布时间】:2015-06-16 20:27:22
【问题描述】:
当我在 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 似乎被无休止地调用。关于可能导致此错误的任何想法?
【问题讨论】:
-
我认为
$locationProvider.html5Mode(true);是问题所在!如果您将其设置为false,它是否有效? -
你可能需要使用
hasPrefix,比如$locationProvider.html5Mode(true).hashPrefix('!');,你将需要它用于ie8和ie9 -
@BettySt 将其更改为 false 不起作用并在 chrome 中破坏它 @pankajparkar 添加
hashprefix(!`) 没有任何区别。 -
你的意思是把它改成
false? -
坏消息。 IE9 不支持 HTML5 History API。这就是 angular html5Mode 使用的。如果你需要你的应用在 IE9 上运行,你需要切换回来,@see stackoverflow.com/questions/22763599/…
标签: javascript angularjs internet-explorer-8