From 971310289dbac36e698e7b6d89fc142b0fcb12dc Mon Sep 17 00:00:00 2001 From: Pascal Corpet Date: Wed, 4 Jul 2012 10:07:09 +0200 Subject: [PATCH] Allow dynamic default parameters of --- src/ngResource/resource.js | 1 + test/ngResource/resourceSpec.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/ngResource/resource.js b/src/ngResource/resource.js index 5bf3e07a0757..46a03fb31092 100644 --- a/src/ngResource/resource.js +++ b/src/ngResource/resource.js @@ -308,6 +308,7 @@ angular.module('ngResource', ['ng']). function extractParams(data){ var ids = {}; forEach(paramDefaults || {}, function(value, key){ + if (isFunction(value)) { value = value(); } ids[key] = value.charAt && value.charAt(0) == '@' ? getter(data, value.substr(1)) : value; }); return ids; diff --git a/test/ngResource/resourceSpec.js b/test/ngResource/resourceSpec.js index 2981732c9683..2b4963030ba1 100644 --- a/test/ngResource/resourceSpec.js +++ b/test/ngResource/resourceSpec.js @@ -298,6 +298,17 @@ describe("resource", function() { }); + it('should bind default dynamic parameters', function() { + $httpBackend.expect('GET', '/CreditCard/123.visa?minimum=0.05').respond({id: 123}); + var minimum = 5; + var Visa = CreditCard.bind({verb:'.visa', minimum: function() { return minimum; }}); + minimum = 0.05; + var visa = Visa.get({id:123}); + $httpBackend.flush(); + expect(visa).toEqualData({id:123}); + }); + + it('should exercise full stack', function() { var Person = $resource('/Person/:id');