-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