How to build a url with query parameters in Angularjs.
I see the API $location.search()
the problem is $location(url) is to redirect to the url. In my case, I want to pass a url and key:value pairs for the query params and build the url. something like
url: /a/b/c
params: {field1: value1, field2: value2}
result: /a/b/c?field1=value1&field2=value2
I like to use this url for links. I have also seen angular encode ?
, &
characters. Can I avoid this?
Edit:
My intention was to use the url as href for anchor elements. I do use $http to send the request, but sometimes I need to provide a link, with query params (based on the current object)
Thanks
angular's internal and external URL formatting rules are slightly different.
The $location is a means of activating internal routes within your own application.
If it is an external link then $http is what you want.
If it is an internal link, then check it might be worth checking the hash/bang syntax.
There is a nice solution as of 1.4+. You can build a query string from a parameters object with
$httpParamSerializer
:See docs here
Angular uses the
buildUrl()
function internally to make a query string from an object of parameters. For now it's impossible to use it in your code because it's private to$HttpProvider
unless you want to do someeval()
magic.Related issues on github:
Believe you really are sort of barking up the wrong tree... you need to take a look at $http service which gives you $http.get(url, config) or $http.post(url, data, config). For a GET request with parameters see the following SO
$http get parameters does not work
For information about $http and how it works see the Angular docs.
http://docs.angularjs.org/api/ng.$http
Perhaps I'm misunderstanding the goal though and you actually want to navigate to a different place, what I suggest here is just to make the request in the background (AJAX style).
http://jsfiddle.net/4ZcUW/
The JS
The HTML
Does this work for your case?