-1

我試圖讓html5mode,棱角分明的UI路由在IE9工作角度ui路由 - 避免hashbang模式。 IE9

if (window.history && window.history.pushState) { 
    $locationProvider.html5Mode(true); 
} else { 
    console.log('IE9'); 
    window.location.hash = '/'; // IE 9 FIX    
    $locationProvider.html5Mode(true); 
} 

$urlRouterProvider.otherwise("/"); 

$stateProvider 
    .state('placeholder', { 
     url: "/path/:myId", 
     templateUrl: '../path.html 
     controller: 'ResultCtrl' 
    } 
); 

而不是索引/路/身份識別碼我仍然得到指數/#/指數/身份識別碼,然後帶我到索引,因爲瀏覽器忽略散列標籤及其後的所有內容。 (工作在火狐,Chrome,邊緣,IE11-10(瀏覽器支持html5mode/API歷史))

+0

您是否指定了應用程序的基礎url? – MaKCbIMKo

+0

這是你的bug:https://github.com/angular-ui/ui-router/issues/576? – DrColossos

+0

@MaKCbIMKo是的,我有基地網址的頭。 –

回答

-1

除了使用UI路由器,這是我在我的應用程序:

$ locationProvider,這是作爲Angular核心的一部分,配置應用程序的路徑。默認情況下,Angular前綴爲#!的路由,稱爲Hashbang模式。這是一個約定,用於顯示頁面加載是由JavaScript觸發的。

我下面的代碼添加到我的配置功能的應用程序/腳本/ app.js文件

下面的代碼添加到配置功能:

(function() { 
     function config($stateProvider, $locationProvider) { 
     $locationProvider 
      .html5Mode({ 
       enabled: true, 
       requireBase: false 
      }); 
     } 

通過html5Mode方法的enabled屬性設置爲true,hashbang網址被禁用;也就是說,用戶將看到沒有hashbang的乾淨URL。將requireBase屬性設置爲false與hashbang問題無關,但是避免公共$位置錯誤的一種方法。