2016-04-27 16 views
0

In IE9 funktioniert mein eckiges Routing nicht und es leitet mich zu was auch immer vor dem '#' Hashtag war.angular routing ie9 Fehler

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

auch wenn ich manuell/# aus der URL entfernt und erneut versuchen, ich noch weitergeleitet.

Es anhängt ‚#‘ auf meine URL weil html5 Modus History API verwendet, wenn der Browser diese Funktion unterstützt, und fällt zurück auf ‚Hash-Bang‘ (#), wenn es nicht unterstützt wird (wie IE9).

$locationProvider.html5Mode(true); 

$urlRouterProvider.otherwise("/"); 

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

wurden bei verschiedenen Lösungen wie suchen:

aber keiner von ihnen für mich arbeiten.

Ich suche nach einer Lösung, ohne html5mode deaktivieren zu müssen. Hat jemand ein ähnliches Problem erlebt und es geschafft, es zu beheben?

+0

diese Lösung Siehe: http://stackoverflow.com/questions/26140575/angularjs-ng-route-not-working-on-ie9-the-views-are-not-displayed –

+0

@TekriwalD bereits hinzugefügt Meta-Tag, ng-app in Körper, keine Konsole logs:/es ist nicht wirklich das gleiche Problem. –

Antwort

0

Im HTML5-Modus gibt es drei Situationen, in denen das A-Tag nicht umgeschrieben wird: aus dem eckigen Dokument - 1 Links, die ein Zielattribut enthalten. Beispiel: link 2 Absolute Links, die auf ein andere Domäne Beispiel zeigen: link 3-Links beginnend mit ‚/‘, die führen zu einem anderen Basispfad, wenn Basis Beispiel definiert: link

Sie können versuchen, eine globale Richtlinie zu verwenden, so, dass target = '_ self' zu allen Links ohne Ziel hinzufügt.

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