【问题标题】:Angular Routing Causes Infinite Loop In IE角度路由导致 IE 中的无限循环
【发布时间】: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


【解决方案1】:

这是两个问题的组合。第一,改变

$locationProvider.html5Mode(true);

$locationProvider.html5Mode(false);

cmets 中的 Betty 是正确的,IE 将其用于旧版本时存在问题。除此之外,您还需要为 / 创建一个新路由。如果您在使用角度路线时遇到问题,除了when 之外,您还可以致电otherwise 来设置您的路线。在angular documentation 中有更多关于这种路由风格的信息。

【讨论】:

    猜你喜欢
    • 2013-09-04
    • 2014-04-27
    • 2015-11-14
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多