一尘不染

从参数对象构建查询字符串

angularjs

如何在Angularjs中使用查询参数构建URL。

我看到了API $ location.search()

问题是$ location(url)是重定向到url。就我而言,我想为查询参数传递url和key:value对,并构建url。就像是

网址:/a/b/c params:{field1: value1, field2: value2}

结果: /a/b/c?field1=value1&field2=value2

我喜欢使用该URL进行链接。我也看到了angular encoding ?&字符。我可以避免吗?

编辑:

我的意图是将URL用作锚元素的href。我确实使用$ http发送请求,但有时我需要提供一个链接,其中包含查询参数(基于当前对象)

谢谢


阅读 213

收藏
2020-07-04

共1个答案

一尘不染

从1.4+起有一个不错的解决方案。您可以使用以下命令从参数对象构建查询字符串$httpParamSerializer

var qs = $httpParamSerializer(params);

在这里查看文档

默认的$ http params序列化程序,根据以下规则将对象转换为字符串:

{'foo': 'bar'} results in foo=bar
{'foo': Date.now()} results in foo=2015-04-01T09%3A50%3A49.262Z (toISOString() and encoded representation of a Date object)
{'foo': ['bar', 'baz']} results in foo=bar&foo=baz (repeated key for each array element)
{'foo': {'bar':'baz'}} results in foo=%7B%22bar%22%3A%22baz%22%7D" (stringified and encoded representation of an object)
Note that serializer will sort the request parameters alphabetically.
2020-07-04