В нашем приложении «Угловое» мы имеем дело с идентификаторами, содержащими «точку». Например:Угловой ui-router с параметром запроса url, содержащим «точку»
book = {
id: '123.456'
}
У нас есть проблемы с использованием таких идентификаторов, как параметры URL. Все работает хорошо, если навигация происходит через «Угловой», а именно щелчок по ссылке, которая вызывает $state.go('bookDetails', {bookId: book.id});
. Но вещи не работают при перезагрузке страницы
"не может получить /bookDetails?bookId=123.456"
в контроллере:
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id});
}
в представлении
<a href="" ng-click="viewBookDetails(); $event.stopPropagation();">
в маршрутизатор:
.state('bookDetails', {
url: '/bookDetails?bookId'
}
в браузере:
https://example.com/bookDetails?bookId=123.456
Ссылка работает, если «точка» заменяется %2E
в браузере.
Мы пытались заменить «точку» с «% 2Е» в параметре за $ state.go()
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id.split('.').join('%2E')});
}
, но не работает, потому что «%» автоматически кодируются и «точка» в браузере заменяется на «% 252E»
https://example.com/bookDetails?bookId=123%252E456
Может использовать sluggify для этого: https://github.com/paulsmith/angular-slugify Я не уверен, если он работает в вашем случае. – Michelangelo