Manejo de barras inclinadas en el enrutador angularUI
Han pasado horas desde que comencé a trabajar en este problema y parece que no puedo entender la solución.
Tengo una aplicación que puede hacer que los usuarios realmente escriban la URL. En tales casos, no es difícil creer que el usuario pueda ingresar una barra diagonal final. Por ejemplo,
www.example.com/users/2 y www.example.com/edit/company/123
debe ser tratado igual que
www.example.com/users/2/ y www.example.com/edit/company/123/
Esto solo debe hacerse para manejar el enrutamiento de URL en el lado del cliente. No estoy interesado en manejar barras diagonales finales en llamadas de recursos / API. Solo estoy interesado en manejar los trazos cortados en el navegador.
Así que investigué y no encontré muchas respuestas en la red. La mayoría de ellos me llevaron a la sección de preguntas frecuentes del enrutador angular-ui.
https://github.com/angular-ui/ui-router/wiki/Frequency-Asked-Questions
Aquí nos dicen que escribamos una regla, que es lo que quiero hacer, pero no parece estar funcionando, o tal vez lo estoy haciendo mal.
Aquí está el plunkr donde he agregado mi código.
http://plnkr.co/edit/fD9q7L?p=preview
He agregado esto a mi configuración, el resto del código es prácticamente lo básico.
$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;
}
});
Básicamente, quiero hacer que la barra diagonal sea opcional, es decir, su presencia o ausencia en la barra de direcciones no debería tener ningún efecto en el estado cargado.