我正在使用angularjs路由器,因为应用程序开发已基本完成,我无法使用UI-router 。最近我按照this回答在路由中实现了两个可选参数。 这就是我做的。
app.when('/someUrl/:param1?/:param2?',{
templateUrl:'templateurl',
controller:'controllerName'
});
但是当我使用$location.path('/someUrl/1234/5678');
时,网址会添加等效的十六进制代码'?'在URL中,参数是否可用。
即使我发送参数,我也不确定为什么会出现这个参数。 网址看起来像
localhost/someurl/1234%3F/5638%3F
如何避免使用此%3F并保留可选的路由功能,而不使用重复的路由定义。
**抱歉打字错误,我已经用以下内容定义了路线::
没有问题。
答案 0 :(得分:3)
%3F
是?
,因为您没有将:
作为网址的一部分提供,因此会对其进行编码。
您需要使用:
来定义参数。
app.when('/someUrl/:param1?/:param2?',{
templateUrl:'templateurl',
controller:'controllerName'
});