AngularJS $resource GET中的多个参数
Multiple parameters in 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
这是使用finrange REST服务的正确方法。这个从1到4返回rmaID,但是我如何从控制器中使用它,服务中的正确语法是什么?
在控制器中,我想这样使用它:
$scope.rmas = rmaService.findRange({id:'0'/'3'});
你可以重写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});
我更喜欢用更短的方式定义参数。下面是一个完整的例子。
我们这里有两个参数:纬度和经度,它们只在URL中定义。方法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');
});
试着在控制器中使用它来改变你的服务,像这样:
'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'});
});
我不知道这是否会起作用,因为我没有使用ngResource,但这就是我如何编码我的工厂服务。
相关文章:
- 使用Angular Resource查询具有字符串参数的REST API
- angular$resource delete-传递id参数
- 添加新参数到$resource后使用ngChange,Angular
- 尝试从模板将参数发送到$resource工厂
- 如何在 angularjs 中发送带有 $resource 请求的 URL 参数
- 如何将控制器变量作为 AngularJS $resource请求的参数传递
- 将参数传递给$resource(使用 @)
- 如何使用AngularJS$resource.query传递参数
- forEach AngularJS中的$resource函数参数
- $resource's url参数的冒号模板语法是遵循标准的,还是angularjs特有的?
- Angular $resource模板没有正确地使用参数
- angularJS动态追加参数$resource
- Angular $resource如何在URL中不发送参数
- 如何使用Angular $resource传递查询参数数组
- 如何向AngularJS $resource传递参数
- Mean Stack——Angular将参数从控制器传递到$resource对象
- Angular $resource POST请求查询参数未被AWS API网关检测到
- 将自定义参数传递给$resource和transformResponse
- AngularJS $resource GET中的多个参数
- Angularjs:如何传递";字符转换为$resource的参数