2013-04-12 50 views
0

我有了一個AngularJS應用程序不工作的所有的常用IE的解決方法的東西:AngularJS - 路由到空航線(「/」)在IE7

<html id="ng-app" class="ng-app:clientsite" ng-app="clientsite" xmlns:ng="http://angularjs.org"> 
    <head> 
     <!--[if lt IE 9]> 
      <script src="js/html5.js"></script> 
     <![endif]--> 
     <!--[if lte IE 8]> 
      <script> 
      document.createElement('ng-include'); 
      document.createElement('ng-pluralize'); 
      document.createElement('ng-view'); 
      document.createElement('ng:include'); 
      document.createElement('ng:pluralize'); 
      document.createElement('ng:view'); 
      </script> 
     <![endif]--> 
     <!--[if lt IE 8]> 
      <script src="js/json2.js"></script> 
     <![endif]--> 

該網站的工作,我可以去任何路線,除了IE7不撿空的路線, 「/」:

$routeProvider 
.when("/", 
{ 
    templateUrl: "/htm/home.htm" 
}) 

它的路由我的,否則路線:

.otherwise(
{ 
    templateUrl: "/htm/notfound.htm" 
}); 

如果我添加/#/針對e儘管我的路線非常順利,但是我們的客戶不會接受(人們需要能夠直接訪問www.theirsite.com,我們不能要求www.theirsite.com/#/)。

幕後我有一個ASP.Net MVC服務器,它只是將所有東西都路由回我的索引文件(除了IE7中的這一條路徑之外,它可以在整個板上工作)。

如何在IE7中正常工作?

+0

您是否使用HTML5Mode或Hashbang模式?從我的頭頂來看,在最糟糕的情況下,您可以使用根視鏡上的onroutechange進行一些路由操作。 –

+0

我正在使用hashbang模式。那將是什麼樣子?我可以用IE7創可貼。 –

+1

看看$ route服務事件。 http://goo.gl/oCrlB。在你的情況下,你應該在$ rootScope上監視這個事件。您可以使用$ location更改您的路線。對不起,但我無法爲您提供任何概念證明,因爲我在工作。 –

回答

0

我也有類似的問題,這是我的工作如何圍繞它:

.otherwise({ 
    templateUrl: '/app/error.html', 
    resolve: { 
     // Here we ensure that our route has the document fragment (#), or more specifically that it has #/ at a minimum. 
     // If accessing the base URL without a trailing '/' in IE7 it will execute the otherwise route instead of the signin 
     // page, so this check will ensure that '#/' exists and if not redirect accordingly which fixes the URL. 
     redirectCheck: ['$location', function ($location) { 
      var absoluteLocation = $location.absUrl(); 

      if (absoluteLocation.indexOf('#/') === -1) { 
       $location.path('/'); 
      } 
     }] 
    } 
});