首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS -检查资源工厂的实现

AngularJS -检查资源工厂的实现
EN

Stack Overflow用户
提问于 2013-12-16 13:18:46
回答 1查看 719关注 0票数 0

刚开始使用AngularJS & js (作为后端开发人员),这是我曾经研究过的第一个Javascript框架,所以请轻松.

我有一个restful,我想使用AngularJS来使用它。

为了实现这一点,我创建了两个工厂,一个用于控制器需要使用id查询工厂,另一个用于在不需要id时使用复数工厂。

例如,下文:

主计长列出所有产品:

代码语言:javascript
复制
app.controller('ProductController', function($scope, ProductsFactory) {
    $scope.products = [];

    init();
    function init()
    {
        $scope.products = ProductsFactory.query();
    }
});

工厂:

代码语言:javascript
复制
app.factory('ProductsFactory', function($resource) {
    return $resource('/xxx/xxx/xxx/api/v1/product', {}, {
        query: { method: 'GET', isArray: true },
        create: { method: 'POST' }
    });
});

app.factory('ProductFactory', function($resource) {
    return $resource('/xxx/xxx/xxx/api/v1/product/:id', {}, {
        show: { method: 'GET' },
        update: { method: 'PUT', params: { id: '@id' } },
        delete: { method: 'DELETE', params: { id: '@id' } }
    });
});

问题1:我是否正确地实现了资源工厂?问题2:是否有一种方法只使用一家工厂生产产品?例如,允许工厂决定querycreate不需要id,但是showupdatedelete方法需要id?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-16 13:34:06

是的,你只需要一个工厂:

代码语言:javascript
复制
app.factory('ProductFactory', function($resource) {
    return $resource('/xxx/xxx/xxx/api/v1/product/:id', { id : '@id'}, {
        update: { method: 'PUT' },     
    });
});

您不需要为每个请求指定“params”对象。为$resource定义它通常已经足够了(但是如果您想要覆盖它,当然可以使用它)。

注意,您不需要定义CRUD方法,因为$resource已经实现了这些方法(如doc:http://docs.angularjs.or/api/ngResource.$resource中所述)。

目前,如果您想使用"PUT“,只需要定义一个定制的方法更新,但是会打开一个拉请求(https://github.com/angular/angular.js/pull/3416),我希望我们能看到它很快实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20611938

复制
相关文章

相似问题

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