Javascript 如何";重建“;angularjs工厂的$resource?
我正在我的AngularJS Laravel项目中实现我自己的API令牌系统,因此API令牌使用头通过$http发送。问题是,当用户登录时,它会在API工厂中设置API令牌,但$resource不会得到更新Javascript 如何";重建“;angularjs工厂的$resource?,javascript,angularjs,Javascript,Angularjs,我正在我的AngularJS Laravel项目中实现我自己的API令牌系统,因此API令牌使用头通过$http发送。问题是,当用户登录时,它会在API工厂中设置API令牌,但$resource不会得到更新 myApp.factory('Api', ['$resource', '$http', '$cookies',function($resource, $http, $cookies) { var baseURL = 'an api url'; var APIToken = $
myApp.factory('Api', ['$resource', '$http', '$cookies',function($resource, $http, $cookies) {
var baseURL = 'an api url';
var APIToken = $cookies.token;
return {
SetToken: function(token) {
APIToken = token;
console.log(APIToken);
},
Authenticator: function(data,callback) {
$http({
url: baseURL + 'auth',
method: "GET",
params: data
}).success(callback);
},
Authors: $resource(baseURL + "journalists/:id", {id: '@id'}, {
update: {
method:'PUT',
headers: { 'API-Token': APIToken }
},
query: {
method:'GET',
isArray: true,
headers: { 'API-Token': APIToken }
}
}),
};
}]);
最有趣的部分是
头:{'API-Token':APIToken}
部分。问题是,当调用SetToken
时,标题将不会得到更新。这有什么办法吗?我是否为此使用了错误的函数?您的$resource
对象仅在调用时创建和设置一次。它不会在每次调用其函数时访问APIToken
变量。为了使上述代码正常工作,您必须在调用Authors()
之前调用SetToken()
,因为一旦调用Authors()
,就会创建$resource
对象,并在此时使用APIToken
的值。我不知道有什么方法可以做你想做的事情,并且仍然使用$resource
服务。您可能需要直接使用$http
服务,就像您对验证器
功能所做的那样
Authors: {
update: function(obj){
$http({
url: baseURL + 'journalists/' + obj.id,
method: "PUT",
params: obj
});
},
query: function(obj){
$http({
url: baseURL + 'journalists/' + obj.id,
method: "GET",
params: obj
});
},
})
或者类似的。希望这能有所帮助。这正是要走的路。谢谢你给我指明了正确的方向!