mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-05-09 15:24:43 +00:00
fix($resource): prevent default params to be shared between actions
Having a $resource defined as:
var R = $resource('/Path', {}, {
get: {method: 'GET', params: {objId: '1'}},
perform: {method: 'GET'}
});
was causing both actions to call the same URI (if called in this order):
R.get({}); // => /Path?objId=1
R.perform({}); // => /Path?objId=1
This commit is contained in:
parent
b21f4a376d
commit
94e1c0391c
2 changed files with 13 additions and 2 deletions
|
|
@ -314,8 +314,8 @@ angular.module('ngResource', ['ng']).
|
||||||
|
|
||||||
function extractParams(data, actionParams){
|
function extractParams(data, actionParams){
|
||||||
var ids = {};
|
var ids = {};
|
||||||
paramDefaults = extend(paramDefaults, actionParams);
|
actionParams = extend({}, paramDefaults, actionParams);
|
||||||
forEach(paramDefaults || {}, function(value, key){
|
forEach(actionParams, function(value, key){
|
||||||
ids[key] = value.charAt && value.charAt(0) == '@' ? getter(data, value.substr(1)) : value;
|
ids[key] = value.charAt && value.charAt(0) == '@' ? getter(data, value.substr(1)) : value;
|
||||||
});
|
});
|
||||||
return ids;
|
return ids;
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,17 @@ describe("resource", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('should not pass default params between actions', function() {
|
||||||
|
var R = $resource('/Path', {}, {get: {method: 'GET', params: {objId: '1'}}, perform: {method: 'GET'}});
|
||||||
|
|
||||||
|
$httpBackend.expect('GET', '/Path?objId=1').respond('{}');
|
||||||
|
$httpBackend.expect('GET', '/Path').respond('{}');
|
||||||
|
|
||||||
|
R.get({});
|
||||||
|
R.perform({});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
it("should build resource with action default param overriding default param", function() {
|
it("should build resource with action default param overriding default param", function() {
|
||||||
$httpBackend.expect('GET', '/Customer/123').respond({id: 'abc'});
|
$httpBackend.expect('GET', '/Customer/123').respond({id: 'abc'});
|
||||||
var TypeItem = $resource('/:type/:typeId', {type: 'Order'},
|
var TypeItem = $resource('/:type/:typeId', {type: 'Order'},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue