【问题标题】:How do I prevent AngularJS routing from encoding a url parameter with a ~ (tilde)如何防止 AngularJS 路由使用 ~ (波浪号)对 url 参数进行编码
【发布时间】:2020-03-31 00:11:33
【问题描述】:

目前,当我将包含 ~ 的参数传递给 $state.go 时,它会在创建 url 时重复。

例子:

我搜索~abc。然后传递给$state.go('.', {myParam: "~abc"})。然后在网址里面我有https://localhost/somePath?myParam=~~abc

根据 RFC3986,“~”必须在 HTML 表单中以百分比编码为“%7E”。如果我之前编码,那么我仍然有同样的问题。所以我假设该值必须在 $stateProvider 内部处理,或者通过在 UI 路由器内部自定义 $urlmatcherfactoryprovider 来处理。

【问题讨论】:

    标签: angularjs-directive angular-ui-router url-routing state.go


    【解决方案1】:

    在Angularjs中使用新的@ 987654321,您可以通过编写自己的paramserializer并设置$ httpprovider.defaults.paramserializer。

    【讨论】:

    • 这个错误似乎实际上是带有 UrlMatcherFactory 的 angular ui-router 内部的一个错误。您能否为您的回复提供更多背景信息?我正在使用$ StateParams来制作我的$ HTTP请求,并且在请求 span>之前正在转换参数值
    【解决方案2】:

    我可以通过将 any 类型传递给我所在州的 url queryParam 来修复它,因为它不是由 UrlMatcherFactory 通过将 /state?:param 更新为 /state?{param:any} 来编码的,因为这是 ~ 到 @987654326 的预期行为@。更多细节可以在这里找到:https://github.com/angular-ui/ui-router/issues/3790

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-04
      • 2014-09-13
      • 2017-07-12
      • 2014-10-28
      • 1970-01-01
      • 2016-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多