【问题标题】:Extra character while using multiple optional parameter in angular route在角度路线中使用多个可选参数时的额外字符
【发布时间】:2015-08-17 13:28:20
【问题描述】:

我正在使用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 并保留可选的路由功能而不使用重复的路由定义。

**抱歉,拼写错误,我已经用 : 定义了路线,: 没有问题。

【问题讨论】:

    标签: angularjs angularjs-routing


    【解决方案1】:

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

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

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

    【讨论】:

    • 这不是 ':' 的问题。我错误地更新了我的问题,我忘记在此处提及':'。冒号不是问题。
    • 它正在获取参数,但使用“?”,我可以使用 param 变量访问参数,并且该值包含在“?”中字符
    • @LaxmikantDange,您使用的是哪个版本的 Angular?
    • @LaxmikantDange,应该没有问题
    • 是的,是否添加了额外的“?”可选参数声明中提到的字符。如果我没有传递任何参数,那么它也包括“?”作为参数
    猜你喜欢
    • 1970-01-01
    • 2018-03-20
    • 2018-04-08
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多