Eckiger UI-Router mit URL-Abfrageparameter, der einen "Punkt" enthält
In unserer Angular-App müssen wir uns mit IDs befassen, die einen "Punkt" enthalten. Beispielsweise
book = {
id: '123.456'
}
Wir haben Probleme, solche IDs als URL-Parameter zu verwenden. Alles funktioniert gut, wenn die Navigation über "Angular" erfolgt, dh wenn Sie auf den Link klicken, der @ aufruf$state.go('bookDetails', {bookId: book.id});
. Aber die Dinge funktionieren nicht, wenn die Seite neu geladen wird
"/BookDetails?bookId=123.456"@ kann nicht abgerufen werde
in der Steuerung:
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id});
}
in der Ansich
<a href="" ng-click="viewBookDetails(); $event.stopPropagation();">
im Router:
.state('bookDetails', {
url: '/bookDetails?bookId'
}
im Browser:
https://example.com/bookDetails?bookId=123.456
Der Link funktioniert, wenn der "Punkt" durch @ ersetzt wi%2E
im Browser.
Wir haben versucht, "dot" im Parameter für $ state.go () durch "% 2E" zu ersetzen.
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id.split('.').join('%2E')});
}
funktioniert aber nicht, da "%" automatisch codiert wird und der "Punkt" im Browser durch "% 252E" ersetzt wird
https://example.com/bookDetails?bookId=123%252E456