2016-10-13 1 views
0

Wir verwenden angular 1,5 und haben unseren eigenen Routing-Mechanismus (durch Hören auf $locationChangeSuccess Ereignis).Wie verhindere ich, dass AngularJS 1.5 meinen URL-Hash-Code löscht und '/' durch '% 2F' ersetzt?

Es funktioniert gut, aber wenn ich den Hash-Teil der URL bearbeiten, und setzen Sie sich auf #a/b, es wird sofort mit #a%2fb (obwohl $locaction.hash() kehrt ‚a \ b‘) ersetzt.

Irgendeine Idee, warum das passiert, und noch wichtiger, wie es verhindert werden kann?

Zuerst dachte ich, es den Browser ausgeführt wird, aber wenn ich #a/b an die URL einer einfachen HTML-Datei im Browser hinzufügen, die / bleibt, so gehe ich davon aus Winkel ist hier beteiligt.

In meinem app.ts, $locationProvider wie folgt konfiguriert ist:

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

Antwort

0

ich in Winkelquelle sah und erkannte dies wahrscheinlich mit html aktiviert sein, kann nicht getan ist - wird Hash-Teil immer verschlüsselt werden. Aber ich habe herausgefunden, dass die Kodierung, die im $ location-Dienst verwendet wird, eine benutzerdefinierte Kodierung ist und ':' nicht kodiert ist, also habe ich von '/' als Trennzeichen im Hashteil Gebrauch gemacht um ':' zu verwenden.

1

Hinzufügen des Ausrufezeichens '!' zu Ihren Links sollte auch die Arbeit tun, für Ihren Fall sollte so etwas sein:

<a href="#!a/b" 
Verwandte Themen