2016-04-27 155 views
0

在IE9中,我的角度路由不起作用,它會將我重定向到「#」#標籤之前的任何內容。角度路由ie9錯誤

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

即使我手動刪除從URL中/#,然後再試一次,我仍然得到重定向。

它將'#'附加到我的URL,因爲html5模式在瀏覽器支持時使用History API,並且在不支持(如IE9)時回退到'hashbang'(#)。

$locationProvider.html5Mode(true); 

$urlRouterProvider.otherwise("/"); 

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

一直在尋找不同的解決方案,如:

,但他們都不是爲我工作。

我正在尋找一種解決方案,而不必停用html5mode。任何人遇到類似的問題,並設法修復?

+0

請參閱此解決方案: http://stackoverflow.com/questions/26140575/angularjs-ng-route-not-working-on-ie9-the-views-are-not-displayed –

+0

@TekriwalD已經添加元標記,體內ng-app,沒有控制檯日誌:/它也不是真正的同樣的問題。 –

回答

0

在HTML5模式下,有三種情況,A標記未被重寫:來自角度文檔 - 包含目標屬性的鏈接。例如:鏈接 2指向不同的域實例中的絕對鏈接:link 3個環節開始以「/」,導致不同的基本路徑,當基地被定義例如:link

你可以嘗試使用全局指令像這樣將target ='_ self'添加到所有沒有目標的鏈接。

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