mirror of
https://github.com/Hopiu/angular.js.git
synced 2026-03-16 23:30:23 +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){
|
||||
var ids = {};
|
||||
paramDefaults = extend(paramDefaults, actionParams);
|
||||
forEach(paramDefaults || {}, function(value, key){
|
||||
actionParams = extend({}, paramDefaults, actionParams);
|
||||
forEach(actionParams, function(value, key){
|
||||
ids[key] = value.charAt && value.charAt(0) == '@' ? getter(data, value.substr(1)) : value;
|
||||
});
|
||||
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() {
|
||||
$httpBackend.expect('GET', '/Customer/123').respond({id: 'abc'});
|
||||
var TypeItem = $resource('/:type/:typeId', {type: 'Order'},
|
||||
|
|
|
|||
Loading…
Reference in a new issue