fix($location): remove query args when passed in object

Query args will be removed from $location search object if they are passed in as null or undefined object properties

Closes #6565
This commit is contained in:
Sekib Omazic
2014-03-06 12:33:07 +01:00
committed by Igor Minar
parent 7088ed1ed3
commit a26acb64fe
2 changed files with 14 additions and 0 deletions

View File

@@ -446,6 +446,11 @@ LocationHashbangInHtml5Url.prototype =
if (isString(search)) {
this.$$search = parseKeyValue(search);
} else if (isObject(search)) {
// remove object undefined or null properties
forEach(search, function(value, key) {
if (value == null) delete search[key];
});
this.$$search = search;
} else {
throw $locationMinErr('isrcharg',

View File

@@ -117,6 +117,15 @@ describe('$location', function() {
});
it('search() should remove multiple parameters', function() {
url.search({one: 1, two: true});
expect(url.search()).toEqual({one: 1, two: true});
url.search({one: null, two: null});
expect(url.search()).toEqual({});
expect(url.absUrl()).toBe('http://www.domain.com:9877/path/b#hash');
});
it('search() should handle multiple value', function() {
url.search('a&b');
expect(url.search()).toEqual({a: true, b: true});