aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMykhailo Kotsur2012-03-29 22:16:10 +0200
committerIgor Minar2012-04-02 08:35:30 -0700
commit59fa40ec0e851759d35fb0ea5fd01019d1403049 (patch)
treede57cb46d1f1f574cab8cdc1f2ac097a35980f2e
parenta1f7f5d4d06cc3cea97cf0ab134f14966b9b010a (diff)
downloadangular.js-59fa40ec0e851759d35fb0ea5fd01019d1403049.tar.bz2
fix($location): search setter should not double-encode the value
By mistake both the setter and helper function that composes the whole url were encoding the search values. Closes #751
-rw-r--r--src/ng/location.js2
-rw-r--r--test/ng/locationSpec.js13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/ng/location.js b/src/ng/location.js
index 1accb993..b0270432 100644
--- a/src/ng/location.js
+++ b/src/ng/location.js
@@ -335,7 +335,7 @@ LocationUrl.prototype = {
if (paramValue === null) {
delete this.$$search[search];
} else {
- this.$$search[search] = encodeUriQuery(paramValue);
+ this.$$search[search] = paramValue;
}
} else {
this.$$search = isString(search) ? parseKeyValue(search) : search;
diff --git a/test/ng/locationSpec.js b/test/ng/locationSpec.js
index 646a9ca0..164251ab 100644
--- a/test/ng/locationSpec.js
+++ b/test/ng/locationSpec.js
@@ -330,6 +330,19 @@ describe('$location', function() {
expect(url.search()).toEqual({'i j': '<>#'});
expect(url.hash()).toBe('x <>#');
});
+
+
+ it('should return decoded characters for search specified in URL', function() {
+ var locationUrl = new LocationUrl('http://host.com/?q=1%2F2%203');
+ expect(locationUrl.search()).toEqual({'q': '1/2 3'});
+ });
+
+
+ it('should return decoded characters for search specified with setter', function() {
+ var locationUrl = new LocationUrl('http://host.com/');
+ locationUrl.search('q', '1/2 3');
+ expect(locationUrl.search()).toEqual({'q': '1/2 3'});
+ });
});
});