Angular-Resource文档说明参数:
如果任何参数值是一个函数,每次需要获取一个请求的参数值时都会执行它(除非重写了参数)。
不幸的是,这对我不起作用,该函数仅在资源初始化时调用一次。
我的情况: 我有一个全局应用程序状态,您可以在应用程序的顶部导航中选择。此状态会影响大多数调用中的查询参数。 (例如,呼叫有效的日期)。我在服务中保持这种全球状态。
我的服务(模型层)如下所示:
function($resource, ApplicationState) {
return $resource('test/:_id', {
date: ApplicationState.getCurrentTime()
}, {
get: {
method: 'GET'
}
});
}
我希望每次拨打电话都会调用ApplicationState.getCurrentTime()
。它只被调用一次。
我创建了一个plunkr作为例子。打开浏览器调试控制台,看到ApplicationState.getCurrentTime()
只调用一次,而不是每次单击按钮。
http://plnkr.co/edit/qeoIUuzFCqnQNdnYp5ZX?p=preview
我做错了什么?有没有更好的方法将动态参数注入某些资源?我知道请求拦截器的概念,但我只需要一些服务,而不是全部。
感谢您的帮助!
答案 0 :(得分:3)
我在Github的 frfancha 的帮助下找到答案,诀窍是传递函数本身而不是函数的结果。
在此处查看ApplicationState.getCurrentTime之后缺少的括号:
function($resource, ApplicationState) {
return $resource('test/:_id', {
date: ApplicationState.getCurrentTime
}, {
get: {
method: 'GET'
}
});
}
每次发出请求时,都会评估该功能。
可以在此处找到更新的Plnkr:http://plnkr.co/edit/Qx9HSsFwt5LDiM6Vmgff?p=preview 积分转到Github上的frfrancha