我尝试使用以下结构启用一个功能,可以根据多个标签(一系列标签)搜索用户:
GET '/tags/users?tag[]=test&tag[]=sample'
我在我的节点服务器上工作并使用Postman成功测试了它。我遇到的问题是如何使用GET
在我的Angular服务中构建此$resource
请求。我找到了$http
的文档,说明在请求对象中添加params:{'tag[]': tag}
可以解决问题,但无法找到有关$resource
的任何内容。
答案 0 :(得分:3)
在角度中,您可以使用$resource
在控制器中:
angular.module('myApp').controller('userController',['$scope','userService', '$location',
function($scope, userService, $location){
$scope.searchQuery = {};
$scope.SearchUsers = function() {
$scope.roles = ['admin', 'register', 'authenticate'];
$scope.searchQuery.name ='xxx';
$scope.searchQuery['roles[]'] = $scope.roles;
userService.searchUsers($scope.searchQuery)
.$promise.then(function (response) {
$scope.users = response.users;
});
};
}
]);
在服务中:
angular.module('myApp').factory('userService', ['$resource',
function($resource) {
return {
searchUsers: function(searchQuery){
var searchRequest = $resource('/auth/search/user', {}, {
'get': {method: 'GET'}
});
return searchRequest.get(searchQuery);
}
};
}
]);
请求网址如:
/auth/search/users?name=xxx&roles%5B%5D=admin&roles%5B%5D=register&roles%5B%5D=authenticate
您在请求网址
中获得%5B%5D
而不是[]
如果您希望返回array
而不是object
,那么您应该使用
'get': {method: 'GET', isArray: true}