Behandlung von nachgestellten Schrägstrichen im angleUI-Router
Es sind Stunden vergangen, seit ich angefangen habe, an diesem Problem zu arbeiten, und ich kann nicht scheinen, meinen Kopf um die Lösung zu bekommen.
Ich habe eine App, die dazu führen kann, dass Benutzer die URL tatsächlich eingeben. In solchen Fällen ist es nicht schwer zu glauben, dass der Benutzer einen abschließenden Schrägstrich eingeben könnte. Zum Beispiel,
www.example.com/users/2 und www.example.com/edit/company/123
sollte genauso behandelt werden wie
www.example.com/users/2/ und www.example.com/edit/company/123/
Dies ist nur für die Verarbeitung des URL-Routings auf der Clientseite erforderlich. Ich bin nicht daran interessiert, abschließende Schrägstriche in Ressourcen- / API-Aufrufen zu behandeln. Ich interessiere mich nur für die Behandlung von Schrägstrichen im Browser.
Also habe ich recherchiert und nicht viele Antworten im Netz gefunden. Die meisten von ihnen führten mich zum FAQ-Bereich des Angular-UI-Routers.
https://github.com/angular-ui/ui-router/wiki/Häufig gestellte Fragen
Hier fordern sie uns auf, eine Regel zu schreiben, was ich tun möchte, aber es scheint nicht zu funktionieren, oder vielleicht mache ich es falsch.
Hier ist der Punkt, an dem ich meinen Code hinzugefügt habe.
http://plnkr.co/edit/fD9q7L?p=preview
Ich habe dies zu meiner Konfiguration hinzugefügt, der Rest des Codes ist so ziemlich das grundlegende Zeug.
$urlRouterProvider.rule(function($injector, $location) {
//if last charcter is a slash, return the same url without the slash
if($location.$url[length-1] === '/') {
return $location.$url.substr(0,$location.$url.length - 2);
} else {
//if the last char is not a trailing slash, do nothing
return $location.$url;
}
});
Grundsätzlich möchte ich den abschließenden Schrägstrich optional machen, dh das Vorhandensein oder Fehlen in der Adressleiste sollte sich nicht auf den geladenen Zustand auswirken.