AngularJS $resource GET 中的多个参数
Posted
技术标签:
【中文标题】AngularJS $resource GET 中的多个参数【英文标题】:Multiple parameters in AngularJS $resource GET 【发布时间】:2015-08-16 18:05:42 【问题描述】:'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');
但这不起作用。
【问题讨论】:
【参考方案1】:您可以覆盖网址,阅读$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);
【讨论】:
谢谢,就是这样。我真的不喜欢关于 AngularJS 的 Google 文档。示例太简单了,文档……不适合我,或者它们太混杂了。基本上我试过这个,但我没有改变网址。如果你必须从两个表(连接等)中获取呢?有可能吗?【参考方案2】:我更喜欢用更短的方式定义参数。这是一个完整的例子。
我们这里有 2 个参数:latitude 和 :longitude,它们只在 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');
);
【讨论】:
【参考方案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');
);
顺便说一句,我不知道这是否可行,因为我没有使用 ngResource,但这就是我编写工厂服务的方式。
【讨论】:
以上是关于AngularJS $resource GET 中的多个参数的主要内容,如果未能解决你的问题,请参考以下文章
了解 angularJS $resource isArray 属性
如何使用 AngularJS 的 $resource 和 spring rest 控制器获取布尔值