2013-02-25 3 views
7

カスタム$リソースアクションのパスを指定することはできますか?私はそれが好きで使用することができますので、

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

私のような何か書きたいことは直接AngularJSの現在のバージョンではサポートされていません

User.names() # GET /users/names 
+1

受け入れられる回答は古くから廃止されています。それについて話している機能だけでなく、もっと簡単な選択肢もあります(http://stackoverflow.com/a/20022017/1709587)。 –

答えて

8

をしかし、オープンpull requestあり近い将来サポートされる可能性があります。

それまであなたは3つのオプション持っている:

1)パスの変数を再生する:

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

2)$http service代わり

3を使用)からのコードを試してみてくださいAngularJSのサルパッチ版の上記のPR

+3

Angular 1.2に 'url'プロパティがあります。参照:http://stackoverflow.com/a/20022017/2583484 – Adam

5

ログを確認するworking 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(); 
    } 
); 
+0

ありがとうございます。これは私のプロジェクトにとって素晴らしい仕事でした。 –

5

あまり説得力が、同様に効果的な方法:あなたは以前のものを上書きしますカスタムアクションの「URL」を指定することができます https://docs.angularjs.org/api/ngResource/service/ $リソース:

var resourceUrl = '/users'; 
return $resource(resourceUrl, {}, { 
    names: { path: resourceUrl + '/names', method: 'GET', isArray: true } 
}) 
5

角度のドキュメントから。

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

これは、角度1.3.10を使用して私のプロジェクトで動作します!

+0

これは素晴らしいです。ありがとう! – whiterook6

関連する問題