Обработка завершающих слешей в angularUI router
Прошло уже много часов с тех пор, как я начал работать над этой проблемой, и я никак не могу разобраться с решением.
У меня есть приложение, которое может привести к тому, что пользователи будут вводить URL-адрес. В таких случаях нетрудно поверить, что пользователь может ввести косую черту. Например,
www.example.com/users/2 и www.example.com/edit/company/123
следует относиться так же, как
www.example.com/users/2/ и www.example.com/edit/company/123/
Это нужно сделать только для обработки маршрутизации URL на стороне клиента. Меня не интересует обработка косых черт в вызовах ресурсов / API. Меня интересует только обработка косой черты в браузере.
Поэтому я исследовал и нашел не так много ответов в сети. Большинство из них привело меня к разделу часто задаваемых вопросов по angular-ui router.
https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions
Здесь они говорят нам написать правило, которое я и хочу сделать, но оно, похоже, не работает, или, возможно, я делаю это неправильно.
Вот plunkr, где я добавил свой код.
http://plnkr.co/edit/fD9q7L?p=preview
Я добавил это в свой конфиг, остальная часть кода в значительной степени является основной вещью.
$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;
}
});
По сути, я хочу сделать косую черту необязательной, т. Е. Ее наличие или отсутствие в адресной строке не должно влиять на загруженное состояние.