From 21e78c443fc5ced77f1ae7e3fc1647f7d9a22115 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Wed, 15 Sep 2010 18:12:04 +0200 Subject: Delete requests on resources pass this as data. Delete requests should not be passing data in the body of the response. The bug is here: http://github.com/angular/angular.js/blob/master/src/Resource.js#L119 Instead of checking for !isGet you should be checking for !isPost. Also isPost should be isPostOrPut since only on those two methods should be sending a payload if I am not mistaken. --- src/Resource.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Resource.js b/src/Resource.js index 03718b5e..85028dc1 100644 --- a/src/Resource.js +++ b/src/Resource.js @@ -64,7 +64,7 @@ ResourceFactory.prototype = { foreach(actions, function(action, name){ var isGet = action.method == 'GET'; - var isPost = action.method == 'POST'; + var isPostOrPut = action.method == 'POST' || action.method == 'PUT'; Resource[name] = function (a1, a2, a3) { var params = {}; var data; @@ -81,7 +81,7 @@ ResourceFactory.prototype = { } case 1: if (isFunction(a1)) callback = a1; - else if (isPost) data = a1; + else if (isPostOrPut) data = a1; else params = a1; break; case 0: break; @@ -120,7 +120,8 @@ ResourceFactory.prototype = { if (!isGet) { Resource.prototype['$' + name] = function(a1, a2){ - var params = {}; + var self = this; + var params = extractParams(self); var callback = noop; switch(arguments.length) { case 2: params = a1; callback = a2; @@ -129,8 +130,8 @@ ResourceFactory.prototype = { default: throw "Expected between 1-2 arguments [params, callback], got " + arguments.length + " arguments."; } - var self = this; - Resource[name](params, this, function(response){ + var data = isPostOrPut ? self : _undefined; + Resource[name](params, data, function(response){ copy(response, self); callback(self); }); -- cgit v1.2.3