Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS$resource GET中有多个参数_Javascript_Angularjs_Rest_Ngresource - Fatal编程技术网

Javascript AngularJS$resource GET中有多个参数

Javascript AngularJS$resource GET中有多个参数,javascript,angularjs,rest,ngresource,Javascript,Angularjs,Rest,Ngresource,这是使用findRange REST服务的正确方法。这一个将rmaID从1返回到4,但如何从控制器使用它,以及服务中的正确语法是什么 在控制器中,我想使用类似的方式: 'use strict'; angular.module('rmaServices', ['ngResource']) .factory('rmaService', ['$resource', function ($resource) { return $resource(

这是使用findRange REST服务的正确方法。这一个将rmaID从1返回到4,但如何从控制器使用它,以及服务中的正确语法是什么

在控制器中,我想使用类似的方式:

'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

但这不起作用。

您可以覆盖url,阅读文档

url–{string}–特定于操作的url重写。url模板与资源级url一样受支持

在资源声明中

内部控制器


尝试在控制器中使用它更改服务,如下所示:

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

顺便说一句,我不知道这是否可行,因为我没有使用ngResource,但这就是我编写factory服务代码的方式。

我更喜欢用更短的方式定义参数。这是一个完整的例子

这里有两个参数:纬度和经度,它们仅在URL中定义。方法get已由ngResource定义

'use strict';
angular.module('rmaServices', ['ngResource'])
    .factory('rmaService', ['$resource',
        function ($resource) {

          var service ={}

          service.rma = function(){ // name it whatever you want

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


//in controller
rmaService.rma()
  .then(function(resource){
    $scope.rmas = resource.$findRange({id:'0'/'3'});
  });

谢谢,就这样。我真的不喜欢谷歌关于AngularJS的文档。示例太简单,文档太复杂……对我来说不是这样,或者它们太复杂。基本上我试过了,但我没有改变网址。如果您必须从两个表(联接等)获取数据,该如何处理?可能吗?
$scope.rmas = rmaService.findRange({id:0, to: 3});
'use strict';
angular.module('rmaServices', ['ngResource'])
    .factory('rmaService', ['$resource',
        function ($resource) {

          var service ={}

          service.rma = function(){ // name it whatever you want

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


//in controller
rmaService.rma()
  .then(function(resource){
    $scope.rmas = resource.$findRange({id:'0'/'3'});
  });
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');
  });