意思是 JS 堆栈,创建一个处理两个不同路径的工厂

Mean JS stack, create a factory that handles two different paths

我正在使用 MEAN JS 框架和它附带的几乎所有东西。 但是,我试图在用户转到特定路径时添加自定义查询 (url)。 这是 MEAN JS 附带的代码:(in modules/articles/client/services)

'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'
      }
    });
  }
]);

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

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

//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'
                }
            })
        };
    };
]);

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

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

的类别