Javascript 如何在AngularJS中使用$resource查询所有内容
我不相信我了解如何正确使用Angular的服务。我使用的是JAX-RS服务器端 如果服务应该像这样工作(从 那么如何查询所有工作流?我无法使用Javascript 如何在AngularJS中使用$resource查询所有内容,javascript,rest,angularjs,jax-rs,Javascript,Rest,Angularjs,Jax Rs,我不相信我了解如何正确使用Angular的服务。我使用的是JAX-RS服务器端 如果服务应该像这样工作(从 那么如何查询所有工作流?我无法使用WorkflowService来实现这一点,因为它已经尝试/api/workflow/:uuid。我需要有另一个服务,这是基于另一个网址 这看起来不是很灵活,除非我用错了 我习惯于看到服务处理所有数据查询,并使用类似WorkflowService.getActiveWorkflows()的方法返回工作流[] 但是,我不确定如何组织此服务,因为我仍然希望有与
WorkflowService
来实现这一点,因为它已经尝试/api/workflow/:uuid
。我需要有另一个服务,这是基于另一个网址
这看起来不是很灵活,除非我用错了
我习惯于看到服务
处理所有数据查询,并使用类似WorkflowService.getActiveWorkflows()
的方法返回工作流[]
但是,我不确定如何组织此服务,因为我仍然希望有与单个实体交互的方法,如
WorkflowService.save(工作流)代码>。由于$resource
是如何围绕特定的RESTful URL设计的,因此很难正确地构造它…我最终得到了这个解决方案
这使我能够构建服务中所需的任何解决方案,同时仍然可以访问可用的资源
'use strict';
/* Services */
angular.module('workstation.services', ['ngResource']).
service('WorkflowService', function ($resource, $http, apiUrl) {
var service = new BaseService($resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {}));
/* Get all available workflows */
service.getWorkflows = function () {
return $http.get(apiUrl+'/api/workflow/getAllActive').then(function (response) { return response.data });
}
return service;
});
/* Base service */
function BaseService(resource) {
this.resource = resource
};
BaseService.prototype.getResource = function () { return this.resource }
BaseService.prototype.newResourceInstance = function () { return new this.resource }
检查,阅读操作参数。它支持定义将覆盖特定操作的基本url的url
使用默认操作“queryAll”,您可以从资源中查询所有内容
例如:
angular.module('workstation.services', ['ngResource']).
factory('WorkflowService', function($resource, apiUrl){
return $resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {
queryAll: {
url: apiUrl + '/api/workflow/getAllActive',
method: 'GET',
cache: false,
isArray: true
}
});
});
如果调用该方法而不传递:uuid参数,Angular将从url中删除该参数,我知道。您是否尝试像这里这样调用服务:+1以获取描述性标题(所有内容):)
angular.module('workstation.services', ['ngResource']).
factory('WorkflowService', function($resource, apiUrl){
return $resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {
queryAll: {
url: apiUrl + '/api/workflow/getAllActive',
method: 'GET',
cache: false,
isArray: true
}
});
});