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.
This commit is contained in:
Misko Hevery 2010-09-15 18:12:04 +02:00
parent 2acce6a334
commit 21e78c443f

View file

@ -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);
});