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

时间:2014-01-20 03:52:39

标签: angularjs

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

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

变为

/ somePath DS%5B%5D = 1&安培; DS%5B%5D = 2及DS%5B%5D = 3

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

2 个答案:

答案 0 :(得分:2)

原谅迟到的答复,但我自己也遇到了类似的困境,并认为我会提供建议。

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

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

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

如果您需要在编码后使用位置网址,则可以随时拨打decodeURIComponent

答案 1 :(得分:1)

有些年头了,但我找到了绕过$ location服务所做的URI编码的方法:只需重写WHERE FieldName IN (1,2,3)

window.encodeURIComponent

这不是最佳解决方案,但它可以按预期工作。