Прошло несколько часов с тех пор, как я начал работать над этой проблемой, и я не могу придумать решение.
У меня есть приложение, которое может привести к тому, что пользователи действительно набрали 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.
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;
}
});
В принципе, я хочу сделать конечную косую черту необязательной, т.е. наличие или отсутствие на адресной строке не должно влиять на состояние загрузки.