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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage