1

我正在使用 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'
      }
    });
  }
]);

这会处理控制器中定义的所有功能,它们是: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'
      }
    });
  }
]);
4

1 回答 1

1

有多种方法可以做到这一点,您可以调用另一个工厂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/categoryarticleId

于 2016-03-22T07:06:40.347 回答