2015-03-18 22 views
8

Ho un'applicazione Angular v1.3, che utilizza l'interfaccia utente angolare v0.2.13 per tutto il routing. Il sito funziona alla grande su tutti i browser, inclusi IE 10 e IE 11, ma non IE 9 (abbiamo deciso di non perseguire IE8, che a mio avviso non è supportato dalla v1.3, comunque). Nonostante i miei migliori sforzi, IE 9 risolve continuamente il mio itinerario $stateProvider'sotherwise (che è impostato su /*path, un possibile colpevole, quindi ho disabilitato tale percorso a scopo di test).UI-Router angolare non risolto con Internet Explorer 9

Nel tentativo di ottenere qualsiasi altro percorso per risolvere, ho provato a installare $locationProvider.html5Mode(false), modificato il $locationProvider.hashPrefix, cambiato il <base href="/" /> ai vari URL, tra cui <base href="/#!"/>, e ho anche compreso xmlns:ng="http://angularjs.org" nel <html> tag per buona misura. Indipendentemente da ciò che provo, IE 9 tenta continuamente di risolvere il mio itinerario otherwise o nulla se quella rotta è disabilitata. A proposito, l'URL del percorso della mia home page è impostato su /.

Sono stato all'altezza dei miei occhi in codice con una scadenza di lancio incombente, quindi sarò il primo ad ammettere che sto potenzialmente trascurando qualcosa di ovvio. Qualcuno può offrire altri suggerimenti o trucchi per risolvere correttamente l'interfaccia utente in IE 9?

risposta

0

Usiamo qualcosa di simile al seguente:

<!DOCTYPE html> 
    <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" ng-csp xml:lang="fr-CA"> 

//... 
var app = angular.module('YourApp', [...]); 
angular.bootstrap(document, ['YourApp'], {strictDi: true}) 

//... 
    angular.module('YourApp').config(['$stateProvider', '$urlRouterProvider', '$locationProvider', 
    function ($stateProvider, $urlRouterProvider, $locationProvider) { 
    $locationProvider.html5Mode(false); 
    $locationProvider.hashPrefix('!'); 

    $urlRouterProvider.otherwise('/'); 

    $stateProvider 
     .state('home', { 
     url: '/', 
     cache: false, 
     controller: 'HomeController as vm' 
     }) 
     .state('anon', { 
     url: '/info', 
     controller: 'AnonController as vm' 
     }) 

// etc ...

0

Per me, percorsi IE9 correttamente per gli URL hash, /#/example, ma la visita / sarebbe risolvere al contrario percorso. Ho lavorato su questo utilizzando una funzione per il contrario, e controllando l'url in esso.

$urlRouterProvider.otherwise(function($injector){ 
    var state = $injector.get('$state'); 
    var location = $injector.get('$location'); 
    if (!location.url()) { 
     // handle HTML5 fallback/IE9 when url has no hash 
     return state.go('home'); 
    } 
    state.go('404'); 
}); 
Problemi correlati