Angularjs 组织和使用NGR资源的优雅方式
我的应用程序需要与各种表和视图交互。我是新来的,我想不出一个优雅的方式来组织我的ngResource应用程序中的服务。有什么建议吗? 我认为我的控制器声明中充满了服务 /app/app.resource.jsAngularjs 组织和使用NGR资源的优雅方式,angularjs,code-organization,Angularjs,Code Organization,我的应用程序需要与各种表和视图交互。我是新来的,我想不出一个优雅的方式来组织我的ngResource应用程序中的服务。有什么建议吗? 我认为我的控制器声明中充满了服务 /app/app.resource.js angular.module('totalizacao').factory('ldap', ['$resource', function($resource) { return $resource('api.php/ldap/:usuario/:senha', {usuario:
angular.module('totalizacao').factory('ldap', ['$resource', function($resource) {
return $resource('api.php/ldap/:usuario/:senha', {usuario: '@usuario', senha:''}, {
login: {
isArray: false,
method: 'POST'
}
});
}]);
angular.module('totalizacao').factory('tb_agendamentos_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_agendamentos_llpp/:ID', {'ID' :''});
}]);
angular.module('totalizacao').factory('tb_atendimentos_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_atendimentos_llpp/:ID', {'ID' :''});
}]);
angular.module('totalizacao').factory('tb_grupo_oferta_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_grupo_oferta_llpp/', {});
}]);
angular.module('totalizacao').factory('tb_mvmt_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_mvmt_llpp/', {});
}]);
ngular.module('totalizacao').factory('tb_ofertas_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_ofertas_llpp/', {});
}]);
angular.module('totalizacao').factory('tb_score_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_score_llpp');
}]);
angular.module('totalizacao').factory('tb_vendas_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_vendas_llpp/:ID_LNHA', {ID_LNHA: ''});
}]);
angular.module('totalizacao').factory('tb_vendas_servicos_llpp', ['$resource', function($resource) {
return $resource('api.php/tb_vendas_servicos_llpp/:ID', {'ID' :''});
}]);
angular.module('totalizacao').factory('vw_agendamentos_llpp', ['$resource', function($resource) {
return $resource('api.php/vw_agendamentos_llpp/');
}]);
angular.module('totalizacao').factory('vw_arvore_ofertas_llpp', ['$resource', function($resource) {
return $resource('api.php/vw_arvore_ofertas_llpp/', {});
}]);
.
.
.
我的控制器
angular.module('totalizacao').controller('arvoreOferta',
['$routeParams','$rootScope','$scope','vw_vendas_llpp','vw_arvore_ofertas_llpp'
,'tb_grupo_oferta_llpp', 'tb_ofertas_llpp', 'tb_agendamentos_llpp','tb_atendimentos_llpp'
,'tb_vendas_servicos_llpp', 'vw_vendas_servicos_llpp'
,'vw_agendamentos_llpp','tb_score_llpp','vw_ofertas_totais','dateFilter'
, function($routeParams, $rootScope, $scope, vw_vendas_llpp, vw_arvore_ofertas_llpp
,tb_grupo_oferta_llpp, tb_ofertas_llpp, tb_agendamentos_llpp
, tb_atendimentos_llpp, tb_vendas_servicos_llpp, vw_vendas_servicos_llpp
, vw_agendamentos_llpp, tb_score_llpp, vw_ofertas_totais, dateFilter){
var self = this;
.
.
.
我总是更喜欢使用$http,因为我可以更好地控制它的通用性,实际上$resource在内部使用$http。但由于您使用了$resource,所以我正在努力以$resource的方式进行操作 请原谅我的语法和编译错误,因为我直接在这里输入。 您可以创建一个公共服务或工厂,比如apiService或apiFactory,然后传递所需的参数、http方法和操作等。。 我不会深入讨论编码细节,因为它取决于您如何概括和传递什么,但类似于以下内容:
//First create a constant object:
angular.module('totalizacao').constant('apiConstants', {
totalizacao: 'api.php/tb_mvmt_llpp/',
totalizacao1: 'api.php/tb_mvmt_llpp1/'
});
// Generalise your factory as you want this is to give you an idea.
angular.module('totalizacao').factory('apiFactory', ['$resource','apiConstants', function($resource) {
var apiFactory = {};
/* Http Method = GET, PUT, POST;
MethodName = { 'get': {method:'GET'},
'save': {method:'POST'},
'query': {method:'GET', isArray:true},
'remove': {method:'DELETE'},
'delete': {method:'DELETE'} };*/
apiFactory.executeApi = function(url, methodName, httpMethod, params){
var paramNames = Object.keys(params);// getKeys
//construct url
// you can put a for loop here to make it more generic for multiple params
//params[paramNames[i]] will get you the value, here i just have one
var completeUrl = url + ':' + paramNames[0]; // api.php/tb_mvmt_llpp/:paramName1
var resources = $resource(completeUrl, null, {
apiMethod: {
method: httpMethod
}
});
//you can return the promise or return the value
resources[methodName](params) ///resources['get'](params)
.$promise.then(function(user) {
// do something
});
return // resources[methodName](params).$promise or some variable after
};
return apiFactory;
});
在控制器中,注入apiFactory、ApicOnStats并执行以下操作
var params = {
paramName1 : 'paramValue1'
};
apiFactory.executeApi(apiConstants.totalizacao, 'get', params).then(success,error);
function success(){};
function error(){};