7

カスタム $resource アクションのパスを指定することはできますか?

次のようなものを書きたいと思います:

angular.module('MyServices', [ 'ngResource' ]).factory('User', [ '$resource', ($resource)->
  $resource('/users', {}, {
    names: { path: '/names', method: 'GET', isArray: true }
  })
])

だから私はそれを次のように使うことができます:

User.names() # GET /users/names
4

4 に答える 4

8

現在のバージョンの AngularJS では直接サポートされていませんが、プル リクエストが公開されているため、近い将来サポートされる可能性があります。

それまでは、次の 3 つのオプションがあります。

1) パス内の変数で遊ぶ:

$resource('/users/:names', {}, {
    names: { params: {names: 'names'}, method: 'GET', isArray: true }
  })

2)代わりに$http サービスを使用する

3) AngularJS のモンキー パッチを適用したバージョンで、前述の PR のコードを試してください。

于 2013-02-25T21:44:54.687 に答える
6

この動作中の Plunkerのログを確認してください(抜粋):

var app = angular.module('plunker', ['ngResource'])
  .controller('MyController', 
    function($scope, $resource) {
      var User = $resource(
        '/users/:action',
        {},
        {
          names:{
            method:'GET', 
            params:{action:'names'}
          }
        }
      );

      $scope.users = User.get();
      $scope.names = User.names();
    }  
  );
于 2013-02-25T21:50:45.310 に答える
5

Angular のドキュメント: https://docs.angularjs.org/api/ngResource/service/ $resource から、前のものをオーバーライドするカスタム アクションに「url」を指定できます。

angular.module('MyServices', ['ngResource']).factory('User', ['$resource', ($resource)-> $resource('/users', {}, {
names: { url: '/users/names', method: 'GET', isArray: true }
})])

angular 1.3.10を使用して私のプロジェクトで動作します!

于 2015-02-10T15:28:16.017 に答える