Имею ввиду JS стек, создайте фабрику, которая обрабатывает два разных пути

Я использую среду 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'
      }
    });
  }
]);

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/category так что получить категории для articleId

Другие вопросы по тегам