如何动态地将标题传递给angularjs的$ resource

时间:2014-09-10 16:58:40

标签: angularjs ngresource

现在,我知道在angularjs调用中为动态标题设置标记的唯一方法是$http,如下所示:

return $http.get({
  url: 'https://my.backend.com/api/jokes',
  params: {
    'jokeId': '5',
  },
  headers: {
    'Authorization': 'Bearer '+ $scope.myOAuthToken
  }
});

但是我想知道如何通过$ resource传递这个,这里有一些不起作用的伪代码:

...
.factory('myFactory',
  ['$resource',
    function($resource){
      return {
        jokes: $resource('https://my.backend.com/api/jokes', null, {
          query: {
            method: 'GET'
          }
        })
      };
    }
  ]
);
...
return myFactory.jokes.query({
  'jokeId': '5',
  'headers': {
    'Authorization': 'Bearer '+ $scope.myOAuthToken
  }
});

如何动态传递标题到angularjs的$ resource?

1 个答案:

答案 0 :(得分:34)

我不认为这可以按照您尝试的方式完成,因为配置对象在操作方法上不可用。但是动作配置方法有它。所以你可以做的是,不是直接返回资源,而是创建一个函数,该函数接受auth令牌的参数,然后构造资源并返回。

return {
    jokes: function (token) {
        return $resource('https://my.backend.com/api/jokes', null, {
            query: {
                method: 'GET'
                headers: {
                    'Authorization': 'Bearer ' + token
                }
            }
        })
    }
};

然后将服务功能调用为

myFactory.jokes($scope.myOAuthToken).query({'jokeId': '5'});