所以我用ngResource定义了多个角度工厂,类似于:
.factory('factoryName', ['$resource', '$http', 'CONSTANTS', 'authService', factoryNameCtrl])
function factoryNameCtrl($resource, $http, CONSTANTS, authService) {
var actions = {
'get': {
method: 'GET',
isArray: false,
params: {
service: '@service',
action: '@action'
}
},
'post': {
method: 'POST',
isArray: false,
params: {
service: '@service',
action: '@action'
}
}
}
actions.get.params.userId = actions.post.params.userId = '@' + authService.currentUser.id;
var res = $resource(CONSTANTS.baseURL + '/:userId/integrations/:service/:action', {}, actions);
如果我使用其他用户登录并注销,则工厂内的userId值不会更新。
我不想将userId传递到我的代码中的每个参数中,而是在它发生变化时使其可用。
以前我有下面的代码,我强迫页面重新加载以重建正确的URL到资源。
if (authService.isAuthenticated()) {
var res = $resource(CONSTANTS.baseURL + '/' + authService.currentUser.id + '/integrations/:service/:action', {}, actions);
return res;
}
你建议做什么?
答案 0 :(得分:1)
要每次计算新鲜度,请使用以下函数:
actions.get.params.userId = function () {
return computeCurrentUserId();
};
来自文档:
如果参数值是一个函数,每次执行时需要获取一个请求的参数值(除非重写了参数)。