web-dev-qa-db-ja.com

AngularJSの複数のパラメーター$ resource GET

'use strict';
angular.module('rmaServices', ['ngResource'])
    .factory('rmaService', ['$resource',
        function ($resource) {
            return $resource(
                   '/RMAServerMav/webresources/com.pako.entity.rma/:id',

                    {},
                   {
                      delete: { method: 'DELETE', params: {id: '@rmaId'}}, 
                      update: { method: 'PUT', params: {id: '@rmaId'}},
                      //RMAServerMav/webresources/com.pako.entity.rma/0/3
                      findRange:{method: 'GET', params:{id:'@rmaId'/'@rmaId'}}
                    });
        }]);

RMAServerMav/webresources/com.pako.entity.rma/0/3

これは、findRange RESTサービスを使用する正しい方法です。これは、1から4までのrmaIDを返しますが、これをコントローラーからどのように使用できますか?サービスの正しい構文は何ですか?

コントローラで私はそれをそのようなものに使いたいです:

$scope.rmas = rmaService.findRange({id:'0'/'3'});

しかし、これは機能していません。

9
Sami

あなたはURLを上書きすることができます、読み取り $ resource docs

url – {string} –アクション固有のURLオーバーライド。 URLテンプレートは、リソースレベルのURLと同様にサポートされています。

リソース宣言内

findRange:{ 
    url: '/RMAServerMav/webresources/com.pako.entity.rma/:id/:to', 
    method: 'GET', 
    params:{ 
        id:'@id', 
        to: '@to'
    }
}

コントローラー内

$scope.rmas = rmaService.findRange({id:0, to: 3});
23
Satpal

パラメータを定義する短い方法がいいと思います。以下は完全な例です。

ここには、URLでのみ定義された2つのパラメータ:latitudeと:longitudeがあります。 getメソッドはngResourceによってすでに定義されています

angular.module('myApp', ['ngResource'])
  .controller('myCtrl', function (ReverseGeocoderResource) {
    ReverseGeocoderResource.get({longitude: 30.34, latitude: 59.97}).$promise.then(function (data) {
      console.log(data.address.road + ' ' + data.address.house_number);
    })
  })
  .factory('ReverseGeocoderResource', function ($resource) {
    return $resource('https://nominatim.openstreetmap.org/reverse?format=json&lat=:latitude&lon=:longitude&zoom=18&addressdetails=1&accept-language=ru');
  });
0
pavelety