48

$location.search() to set an url

the search parameter which is passed to the search() is set by a form. selecting and deselecting an element causes some parameters value to be "null" and so the url looks like this :

myapp.com/search?type=text&parameter=null

so i would like to remove those "null" parameters from the url. In the documentation, there is a "paramValue" which can be passed as a second parameters to .search(search, paramValue) : If the value is null, the parameter will be deleted.

but i can't make this work… any suggestion ?

edit: here is a solution based on @BKM explanation

to remove every parameters which are null, it's necessary to loop through all of them and test each one, like this :

for (var i in search) {
    if (!search[i]) $location.search(i, null);
}
$location.search(search);
François Romain
  • 13,617
  • 17
  • 89
  • 123

3 Answers3

102

Using the $location service, you can remove the search param by assigning it a null value:

In the case when your parameter is null, in your case 'parameter' you can remove it from the url by assigning it a null value like;

$location.search('parameter', null);
starball
  • 20,030
  • 7
  • 43
  • 238
BKM
  • 6,949
  • 7
  • 30
  • 45
  • ok this is removing the parameter. so, to make what i wanted, i had to loop through every parameters and remove it if the parameter is null (`if (!parameter)`). thank you. i am going to edit my answer with this solution – François Romain Sep 02 '13 at 08:08
31

You can use $location.search({}) to clear all at once.

EscapeNetscape
  • 2,892
  • 1
  • 33
  • 32
-1

You can also do:

var search = $location.search();
if (search.parameter == 'null') {
  $location.search({'parameter': null});
}
webmaster_sean
  • 942
  • 4
  • 13
  • 23