首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在AngularJS中使用$resource查询所有内容

如何在AngularJS中使用$resource查询所有内容
EN

Stack Overflow用户
提问于 2013-04-17 00:41:32
回答 2查看 3.8K关注 0票数 6

我不相信我知道如何正确地使用Angular的服务。我使用的是JAX-RS服务器端。

如果服务应该像这样工作(取自phonecat example)...

代码语言:javascript
代码运行次数:0
运行
复制
angular.module('workstation.services', ['ngResource']).
    factory('WorkflowService', function($resource, apiUrl){
        return $resource(apiUrl+'/api/workflow/:uuid', {uuid:'@uuid'}, {});
    });

那么如何查询所有的工作流呢?我不能使用WorkflowService来完成这个任务,因为它已经尝试过/api/workflow/:uuid了。我需要有另一个服务,这是基于另一个网址。

这看起来不太灵活,除非我用错了。

我习惯于看到Service处理所有数据查询,并使用像WorkflowService.getActiveWorkflows()这样的方法来返回Workflow[]

然而,我不确定如何组织这个服务,因为我仍然希望拥有与单个实体交互的方法,比如WorkflowService.save(workflow);。由于$resource是如何被设计成围绕特定的RESTful URL的,因此很难正确地构造它……

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-17 03:10:31

我最终得到了这个解决方案...

这允许我在服务中构建任何我想要的解决方案,同时仍然可以访问可用的资源。

代码语言:javascript
代码运行次数:0
运行
复制
'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 }
票数 0
EN

Stack Overflow用户

发布于 2014-09-23 16:57:23

检查angular documentation from $resource,读取操作参数。它支持定义一个url,该url将覆盖特定操作的基本url。

使用默认操作'queryAll‘,您可以查询资源中的所有内容。

示例:

代码语言:javascript
代码运行次数:0
运行
复制
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
        }
    });
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16042508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档