Angularjs 工厂$resource中的公共响应
我们使用工厂与一系列围绕公共实体的定制API进行交互。然而,我需要做的部分工作是评估在报头中发送回来的自定义响应,看起来他们这样做的方式是使用transformResponse。我所做的似乎是有效的,但我确实在每个定义中一遍又一遍地重复同样的事情。我试图创建一个函数使其可重用,但引用似乎失败了。我做错了什么Angularjs 工厂$resource中的公共响应,angularjs,angular-resource,angular-http,Angularjs,Angular Resource,Angular Http,我们使用工厂与一系列围绕公共实体的定制API进行交互。然而,我需要做的部分工作是评估在报头中发送回来的自定义响应,看起来他们这样做的方式是使用transformResponse。我所做的似乎是有效的,但我确实在每个定义中一遍又一遍地重复同样的事情。我试图创建一个函数使其可重用,但引用似乎失败了。我做错了什么 (function() { 'use strict'; angular.module('aumBills', ['ngResource']) .factory('B
(function()
{
'use strict';
angular.module('aumBills', ['ngResource'])
.factory('Bills', ['$resource',
function($resource)
{
return $resource(
'/ua_aumcore/bills/api/v1/bills/:billableEventI',
{
billableEventI:'@billableEventI'
},
{
getList:
{
method: 'GET',
isArray: false,
transformResponse: function(data, header, status, config, statusText)
{
var response = {};
if (isJson(data))
{
data = angular.fromJson(data);
response.data = data;
}
response.status = status;
response.config = config;
response.statusText = statusText;
return response;
},
url: '/ua_aumcore/bills/api/v1/bills/query/'
},
getParties:
{
method: 'GET',
isArray: false,
transformResponse: function(data, header, status, config, statusText)
{
var response = {};
if (isJson(data))
{
data = angular.fromJson(data);
response.data = data;
}
response.status = status;
response.config = config;
response.statusText = statusText;
return response;
},
url: '/ua_aumcore/bills/api/v1/customer/billParties/?partySites=:partySiteIDs',
params: {partySiteIDs: '@partySiteIDs'}
}
//plus about 12 more after this
});
}]);
function isJson(str)
{
try
{
JSON.parse(str);
}
catch (e)
{
return false;
}
return true;
}
})();
破解的代码看起来和上面的一样,只是我说:
transformResponse: transResp(data, header, status, config, statusText),
在每个定义中,这是紧跟在isJSON之后的函数:
function transResp(data, header, status, config, statusText)
{
var response = {};
if (isJson(data))
{
data = angular.fromJson(data);
response.data = data;
}
response.status = status;
response.config = config;
response.statusText = statusText;
return response;
}
它看起来像是定义了我想用作变量的transformResponse函数,并将该变量插入到定义中:
(function()
{
'use strict';
angular.module('aumBills', ['ngResource'])
.factory('Bills', ['$resource',
function($resource)
{
var transResp = function(data, header, status, config, statusText)
{
var response = {};
if (isJson(data))
{
data = angular.fromJson(data);
response.data = data;
}
response.status = status;
response.config = config;
response.statusText = statusText;
return response;
};
return $resource(
'/ua_aumcore/bills/api/v1/bills/:billableEventI',
{
billableEventI:'@billableEventI'
},
{
get:
{
method: 'GET',
isArray: false,
transformResponse: transResp,
url: '/ua_aumcore/bills/api/v1/bills/:billableEventI'
},
getList:
{
method: 'GET',
isArray: false,
transformResponse: transResp,
url: '/ua_aumcore/bills/api/v1/bills/query/'
}
//and so on and so forth
});
}]);
function isJson(str)
{
try
{
JSON.parse(str);
}
catch (e)
{
return false;
}
return true;
}
})();
显示失败的代码。除非我们看到你做了什么,否则我们无法告诉你你做错了什么。添加了代码。它只是函数调用的简单替换。控制台在transformResponse的第一个定义中抛出一个“数据未定义”。