在 angular 路由中使用多个可选参数时的额外字符

Extra character while using multiple optional parameter in angular route

我正在使用 angularjs 路由器,因为应用程序开发快完成了,我不能使用 UI-router。最近我通过遵循 this 答案在路由中实现了两个可选参数。 这是我做的。

app.when('/someUrl/:param1?/:param2?',{
   templateUrl:'templateurl',
   controller:'controllerName'
});

但是当我使用 $location.path('/someUrl/1234/5678'); 时,url 正在添加等效的十六进制代码 '?'在 URL 参数是否可用。

即使我正在发送参数,我也不确定为什么会出现这个参数。 url 看起来像

localhost/someurl/1234%3F/5638%3F

如何在不使用重复路由定义的情况下避免此 %3F 并保留可选路由功能。

** 抱歉打字错误,我已经用 : 定义了路由,: 没有问题。

%3F?,因为您没有提供 : 它被视为 URL 的一部分,因此它们被编码。

您需要使用:来定义参数。

app.when('/someUrl/:param1?/:param2?',{
   templateUrl:'templateurl',
   controller:'controllerName'
});