diff options
| author | BenjamÃn Eidelman | 2012-08-20 19:47:26 -0300 |
|---|---|---|
| committer | Misko Hevery | 2012-09-06 16:06:22 -0700 |
| commit | 4909d1d39d61d6945a0820a5a7276c1e657ba262 (patch) | |
| tree | a1f54abdd3e0cf28ed32f6f73b6bf6e5da4dd1ce | |
| parent | 7079ff5eb6c22e8755c11385979d9feaad8c7b9d (diff) | |
| download | angular.js-4909d1d39d61d6945a0820a5a7276c1e657ba262.tar.bz2 | |
fix($resource): allow falsy values in URL parameters
Close #1212
when a param value was 0 (or false) it was ignored and removed from url.
after this fix that only happens if the value is undefined or null.
| -rw-r--r-- | src/ngResource/resource.js | 3 | ||||
| -rw-r--r-- | test/ngResource/resourceSpec.js | 20 |
2 files changed, 16 insertions, 7 deletions
diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index cd03d2d2..0a40cedd 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -285,7 +285,8 @@ angular.module('ngResource', ['ng']). params = params || {}; forEach(this.urlParams, function(_, urlParam){ - if (val = (params[urlParam] || self.defaults[urlParam])) { + val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; + if (isDefined(val) && val !== null) { encodedVal = encodeUriSegment(val); url = url.replace(new RegExp(":" + urlParam + "(\\W)", "g"), encodedVal + "$1"); } else { diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 37a8d568..dc837f80 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -51,14 +51,22 @@ describe("resource", function() { it('should ignore slashes of undefinend parameters', function() { var R = $resource('/Path/:a/:b/:c'); - $httpBackend.when('GET').respond('{}'); - $httpBackend.expect('GET', '/Path'); - $httpBackend.expect('GET', '/Path/1'); - $httpBackend.expect('GET', '/Path/2/3'); - $httpBackend.expect('GET', '/Path/4/5'); - $httpBackend.expect('GET', '/Path/6/7/8'); + $httpBackend.when('GET', '/Path').respond('{}'); + $httpBackend.when('GET', '/Path/0').respond('{}'); + $httpBackend.when('GET', '/Path/false').respond('{}'); + $httpBackend.when('GET', '/Path').respond('{}'); + $httpBackend.when('GET', '/Path/').respond('{}'); + $httpBackend.when('GET', '/Path/1').respond('{}'); + $httpBackend.when('GET', '/Path/2/3').respond('{}'); + $httpBackend.when('GET', '/Path/4/5').respond('{}'); + $httpBackend.when('GET', '/Path/6/7/8').respond('{}'); R.get({}); + R.get({a:0}); + R.get({a:false}); + R.get({a:null}); + R.get({a:undefined}); + R.get({a:''}); R.get({a:1}); R.get({a:2, b:3}); R.get({a:4, c:5}); |
