2016-03-22 7 views
1

私はMEAN JSフレームワークを使用しています。 ただし、ユーザーが特定のパス(URL)に移動したときにカスタムクエリを追加しようとしています。 これはMEAN JSに付属のコードである:(モジュール/記事/クライアント/サービス中)平均JSスタック、2つの異なるパスを扱うファクトリを作成する

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

答えて

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()

そしておそらく、あなたはそれがarticleId

用のカテゴリを取得 api/articles/:articleId/categoryへのカテゴリのルートを変更したいです
+0

ありがとう、それは動作します。私はあなたの提案を検討します。私は最終的にタグのための別のスキーマを持っているでしょう、おそらく2つのコントローラと2つの工場を持つことは理にかなっています。 – user2512806

関連する問題