javascript - 平均JS堆栈,创建一个处理两个不同路径的工厂

标签 javascript angularjs crud meanjs factories

我正在使用 MEAN JS 框架以及它附带的几乎所有内容。 但是,我尝试在用户转到特定路径(url)时添加自定义查询。 这是 MEAN JS 附带的代码:(在模块/文章/客户端/服务中)

'use strict';

//Articles service used for communicating with the articles REST endpoints
angular.module('articles').factory('Articles', ['$resource',
  function ($resource) {
    return $resource('api/articles/:articleId', {
      articleId: '@_id'
    }, {
      update: {
        method: 'PUT'
      }
    });
  }
]);

这会处理 Controller 中定义的所有函数,它们是:create、update、find、findOne、remove。现在我正在尝试添加另一个功能, Controller 中的 $scope.findByCategory = function (category) {...}。 但为了让它与服务器通信,我需要添加服务的路径。

我该怎么做?如何编辑我的服务(或工厂),以便它处理我在 Controller 中定义的所有功能。 (我已经在服务器端设置了路由。) 换句话说,我想将上面的代码和下面的代码合并到我的客户端服务中。注意:唯一改变的是路径。

//Articles service used for communicating with the articles REST endpoints
angular.module('articles').factory('Articles', ['$resource',
  function ($resource) {
    return $resource('api/articles/category', {
      articleId: '@_id'
    }, {
      update: {
        method: 'PUT'
      }
    });
  }
]);

最佳答案

有多种方法可以做到这一点,您可以创建另一个名为 Category 的工厂,或者您可以使用相同的方法返回一个对象,如下所示:

angular.module('articles').factory('Articles', ['$resource',
    function($resource) {
        return {
            articles: $resource('api/articles/:articleId', {
                articleId: '@_id'
            }, {
                update: {
                    method: 'PUT'
                }
            }),
            categories: $resource('api/articles/:articleId/category', {
                articleId: '@_id'
            }, {
                update: {
                    method: 'PUT'
                }
            })
        };
    };
]);

您将从 Controller 调用它们,例如 Articles.articles.get()Articles.categories.get()

并且您可能想将类别路由更改为 api/articles/:articleId/category 以便获取 articleId 的类别

关于javascript - 平均JS堆栈,创建一个处理两个不同路径的工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146325/

相关文章:

javascript - 用Electron.js加载一个Nunjucks模板

javascript - 无法在 JavaScript 中显示 JSON 对象字段

angularjs - Angular.js使用ngOptions进行选择: Label the optgroup

javascript - 在测试我的 AngularJS Controller 时,如何在 $http.get promise 中模拟结果?

javascript - 通过 DOM 操作进行 AngularJS 数据绑定(bind)

java - 试图获取不存在的记录: What exception to throw?

php - 查询失败 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法

asp.net-mvc - 处理用户重新提交删除操作的正确方法?

javascript - 如何将链接传递给express.js中的req.flash()

javascript - 将 axios 中的 Prop 传递给 Vue.js?