1

私は MEAN JS フレームワークとそれに付随するほとんどすべてのものを使用しています。ただし、ユーザーが特定のパス (url) に移動したときにカスタム クエリを追加しようとしています。これは MEAN JS に付属するコードです: (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) {...}、コントローラーに別の機能を追加しようとしています。しかし、サーバーと通信するには、サービスへのパスを追加する必要があります。

それ、どうやったら出来るの?サービス (ま​​たはファクトリ) を編集して、コントローラーで定義したすべての関数を処理するにはどうすればよいですか。(私はすでにサーバー側でルートを設定しています。)つまり、クライアントサービスで上記のコードと以下のコードを1つにまとめたいということです。注: 唯一の変更点はパスです。

//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/categoryて、articleId

于 2016-03-22T07:06:40.347 に答える