-1
我想巩固所有我的服务,使api调用的Rails后端成一体。这里是什么样子:
angular.module('feeSuitesApp')
.factory('FeeSuitesSvc', [
'$http',
function ($http) {
var TransformInstance, Result;
TransformInstance = function(FeeObj, obj){
return new FeeObj(obj);
};
Result = function(feeSuiteObj){
var servicePlural = feeSuiteObj.service + 's';
return $http({
method: feeSuiteObj.method,
url: feeSuiteObj.url,
params: feeSuiteObj.params,
transformResponse: function(data){
var w = angular.fromJson(data);
angular.forEach(w[servicePlural], function(obj, idx){
w[servicePlural][idx] = TransformInstance(feeSuiteObj.feeObj, obj);
});
return w;
}
})
}
return {
promise: Result,
};
}]);
POST和GET做工精细,而是把给了我一个RangeError: Maximum call stack size exceeded
FeeRule看起来是这样的:
angular.module('feeSuitesApp')
.factory('FeeRule', function(){
//constructor
var FeeRule = function(obj){
this.id = obj.id || null;
this.name = obj.name || '';
this.fee_suite_id = obj.fee_suite_id || null;
this.fee_parameter_id = obj.fee_parameter_id || null;
this.multiplier = obj.multiplier || 1;
this.addend = obj.addend || 0;
};
return FeeRule;
});
但是,如果我做以下调用一切完美的作品:
var url = '/api/v3/fee_rules/' + feeRule.id;
$http.put(url, { fee_rule: feeRule});
但如果我使用我这样的服务,我得到t他堆栈溢出错误:
var feeSuiteObj = {
url: '/api/v3/fee_rules/' + feeRule.id,
service: 'fee_rule',
method: 'PUT',
params: {
fee_rule: feeRule
},
feeObj: FeeRule
};
FeeSuitesSvc.promise(feeSuiteObj).then(function(success){
$state.go('root');
},function(error){
console.log(error);
});
什么是'service'和'feeobj'和在哪里'data'?对象与文档不匹配。 'params!= data' – charlietfl
根据你的错误(RangeError)我猜你的问题是从这里提出的:“angular.forEach(w [servicePlural],”。更多http://stackoverflow.com/a/22123896/ 335905 – celerno
只是一个fyi,但你可以使用$ resource库进行合并,在我的项目中,我们有如下的API调用,我们可以调用GET,POST,PUT。资源('/:api/orderNumber /:someNumber/orderVersion /:version',null,{ 'update':{method:'PUT'} }); – Ronald91