在我们的 Angular 应用程序中,我们必须处理包含“点”的 id。例如:
book = {
id: '123.456'
}
我们在使用 id 作为 url 参数时遇到问题。如果通过“Angular”进行导航,即单击调用的链接,则一切正常$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
在浏览器中。
我们尝试将 $state.go() 参数中的“dot”替换为“%2E”
$scope.viewBookDetails = function() {
$state.go('bookDetails', {bookId: book.id.split('.').join('%2E')});
}
但不起作用,因为“%”被自动编码,浏览器中的“点”被“%252E”替换
https://example.com/bookDetails?bookId=123%252E456