使用[]方括号作为$ resource中参数的一部分,对Angular中的API调用不起作用

时间:2015-11-01 18:30:13

标签: angularjs api http parameters

我正在尝试从需要参数的ajax本地化REST api中获取用户数据:

/api/activity?filter[user_id]=1

我的工厂设置了如下查询参数:

angular.module('app')
    .factory('Activity',function($resource){
        return $resource(ajaxInfo.api_url+'activity',
        { // Query parameters
            filter: {
                '[user_id]': '@userId'
            }, 
        }, 
        {
            'query':{
                method:'GET',
                headers: {
                    'X-WP-Nonce': ajaxInfo.nonce
                },
                isArray: false
            }
        });
    })

我是控制台。在模板中记录它:

$scope.userOne = Activity.query({userId:1});
console.log($scope.userOne)

它正在返回

http:site.dev/api/activity?filter=%7B%22%5Buser_id%5D%22:%22@userId%22%7D&userId=1".

知道我做错了什么吗?

1 个答案:

答案 0 :(得分:-1)

以下是我为解决这个问题所采取的措施:

我创建了一个名为“CurrentUser”的工厂,这个工厂基本上从api返回当前用户的对象。

然后我创建了一个控制器,当我想按该用户ID过滤活动时,该控制器将参数传递给Activity工厂。

$scope.userInfo = function(){
    //call the CurrentUser and see if it's available and return it as u
    CurrentUser.instance().then(function(u) {
        //now query the activity factory and pass the filter as a string along with the user id as u.id
        Activity.query({'filter[user_id]':u.id}, function(res){
            $scope.userOne = res ;
            console.log($scope.userOne);
        });
    })

};
$scope.userInfo();