角度路由ie9错误

时间:2016-04-27 13:29:48

标签: angularjs angular-ui-router internet-explorer-9

在IE9中,我的角度路由不起作用,它将我重定向到'#'#标签之前的任何内容。

mysite.com /#/ info - > mysite.com

即使我从URL手动删除/#并再试一次,我仍然会被重定向。

它将'#'附加到我的网址,因为html5模式在浏览器支持时使用历史记录API,并且在不支持时会回退到'hashbang'(#)(如IE9)。

$locationProvider.html5Mode(true);

$urlRouterProvider.otherwise("/");

$stateProvider
  .state('statistics', {
      url: "/path/:myId",
      templateUrl: '../some/path/site.html',
      controller: 'Ctrl'
  }
);

一直在寻找各种解决方案,例如:

但他们都不适合我。

我正在寻找解决方案,而无需停用html5mode。任何人都遇到类似的问题,并设法修复?

1 个答案:

答案 0 :(得分:0)

在HTML5模式下,有三种情况不会重写A标记:来自angular docs -      1包含目标属性的链接。示例:链接      2指向不同域的绝对链接示例:link      3以“/”开头的链接,在定义base时导致不同的基本路径示例:link

您可以尝试使用这样的全局指令,将target ='_ self'添加到没有目标的所有链接。

myApp.directive('a', [function () {
return {
    restrict: 'E',
    link: function (scope, element, attrs) {
        if (!attrs['target']) {
            element.attr('target', '_self');
        }
    }
}
}]);