aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaitlin Potter2014-01-27 14:04:45 -0500
committerCaitlin Potter2014-02-03 11:12:07 -0500
commitce1f1f97f0ebf77941b2bdaf5e8352d33786524d (patch)
treebe15f6e2395b79dc4348ca7cf5681714e8b4cceb
parent8205158e477f1ea235feba3087143e0d3e5e52ec (diff)
downloadangular.js-ce1f1f97f0ebf77941b2bdaf5e8352d33786524d.tar.bz2
fix(ngResource): don't append number to '$' in url param value when encoding URI
Previously, if a URL parameter value included a $, it would replace the dollar sign with a literal '$1' for mysterious reasons. Using a function rather than a replacement string circumvents this behaviour and produces a more expected result. Closes #6003 Closes #6004
-rw-r--r--src/ngResource/resource.js4
-rw-r--r--test/ngResource/resourceSpec.js2
2 files changed, 5 insertions, 1 deletions
diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js
index 006f3d37..055f0890 100644
--- a/src/ngResource/resource.js
+++ b/src/ngResource/resource.js
@@ -387,7 +387,9 @@ angular.module('ngResource', ['ng']).
val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam];
if (angular.isDefined(val) && val !== null) {
encodedVal = encodeUriSegment(val);
- url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), encodedVal + "$1");
+ url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) {
+ return encodedVal + p1;
+ });
} else {
url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match,
leadingSlashes, tail) {
diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js
index b23f0ca4..08c27a0f 100644
--- a/test/ngResource/resourceSpec.js
+++ b/test/ngResource/resourceSpec.js
@@ -178,9 +178,11 @@ describe("resource", function() {
$httpBackend.expect('GET', '/Path/foo%231').respond('{}');
$httpBackend.expect('GET', '/Path/doh!@foo?bar=baz%231').respond('{}');
+ $httpBackend.expect('GET', '/Path/herp$').respond('{}');
R.get({a: 'foo#1'});
R.get({a: 'doh!@foo', bar: 'baz#1'});
+ R.get({a: 'herp$'});
});