In unserer Angular App müssen wir mit IDs, die einen "Punkt" enthalten beschäftigen. Zum Beispiel:Angular Ui-Router mit URL-Abfrage-Parameter mit einem "Punkt"
book = {
id: '123.456'
}
Wir haben Probleme mit solchen IDs als URL-Parameter. Alles funktioniert gut, wenn die Navigation durch "Angular" erfolgt, nämlich durch Klicken auf den Link, der $state.go('bookDetails', {bookId: book.id});
aufruft. Aber die Dinge funktionieren nicht, wenn die Seite neu zu laden
"Can not Get /bookDetails?bookId=123.456"
in der Steuerung:
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id});
}
in der Ansicht
<a href="" ng-click="viewBookDetails(); $event.stopPropagation();">
in der Router:
.state('bookDetails', {
url: '/bookDetails?bookId'
}
im Browser:
https://example.com/bookDetails?bookId=123.456
Der Link funktioniert, wenn der "Punkt" mit %2E
im Browser ersetzt.
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id.split('.').join('%2E')});
}
Wir haben versucht, "Punkt" mit "% 2E" in dem Parameter für state.go() $ zu ersetzen, aber nicht funktioniert, weil die "%" automatisch codiert und die "dot" im Browser wird durch "% 252E" ersetzt
https://example.com/bookDetails?bookId=123%252E456
Vielleicht sluggify für diesen Einsatz: https://github.com/paulsmith/angular-slugify ich bin nicht sicher, ob es in Ihrem Fall funktioniert. – Michelangelo