mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-16 23:30:23 +00:00
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
This commit is contained in:
parent
8205158e47
commit
ce1f1f97f0
2 changed files with 5 additions and 1 deletions
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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$'});
|
||||
});
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue