如何使用Angular $ resource

时间:2015-08-19 15:50:18

标签: javascript angularjs angular-resource

我尝试使用以下结构启用一个功能,可以根据多个标签(一系列标签)搜索用户:

GET '/tags/users?tag[]=test&tag[]=sample'

我在我的节点服务器上工作并使用Postman成功测试了它。我遇到的问题是如何使用GET在我的Angular服务中构建此$resource请求。我找到了$http的文档,说明在请求对象中添加params:{'tag[]': tag}可以解决问题,但无法找到有关$resource的任何内容。

1 个答案:

答案 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}