AngularJS:使用$ location避免使用url编码

Tri*_*ong 5 angularjs

我注意到,当我将一个数组参数传递给$ location.search()时,它的编码方式如下例所示

$ location.path('/ somePath').search('ids [] =',[1,2,3]);

/ somePath?DS%5B%5D = 1&DS%5B%5D = 2&DS%5B%5D = 3

有没有办法避免网址编码?

miq*_*iqh 2

请原谅我回复晚了,但我自己也遇到了类似的困境,我想我可以提供建议。

简而言之,如果您打算使用,$location.search则无法避免 URL 被编码。

如果您具体查看 Angular 源代码location.js,您会注意到这些函数返回的组合 URL(即LocationHtml5Url)都依赖于另一个名为 的函数调用toKeyValue,该函数在设置时会对所有键值对进行编码。

此外,在您提供的示例用例中,您不需要密钥中的等于。当$location.search使用两个参数调用时,Angular 将它们视为键值对。

如果您需要在编码后使用位置 URL,您可以随时调用decodeURIComponent.