在 Angular 资源中使用动态参数
Use dynamic parameters in Angular Resource
Angular-资源文档说参数:
If any of the parameter value is a function, it will be executed every time when a param value needs to be obtained for a request (unless the param was overridden).
不幸的是,这对我不起作用,该函数仅在资源初始化时调用一次。
我的情况:
我有一个全局应用程序状态,您可以在应用程序的顶部导航中选择它。此状态会影响大多数调用中的查询参数。 (例如,呼叫有效的日期)。我在服务中维护这个全局状态。
我的服务(模型层)如下所示:
function($resource, ApplicationState) {
return $resource('test/:_id', {
date: ApplicationState.getCurrentTime()
}, {
get: {
method: 'GET'
}
});
}
我希望 ApplicationState.getCurrentTime()
在每次 get 调用时被调用。它只被调用一次。
我创建了一个 plunkr 作为示例。打开浏览器调试控制台,可以看到 ApplicationState.getCurrentTime()
只被调用一次,而不是每次单击按钮时都被调用。
http://plnkr.co/edit/qeoIUuzFCqnQNdnYp5ZX?p=preview
我做错了什么?有没有更好的方法为某些资源注入动态参数?我知道请求拦截器的概念,但我只在某些服务而不是所有服务上需要它。
感谢您的帮助!
我在 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
Angular-资源文档说参数:
If any of the parameter value is a function, it will be executed every time when a param value needs to be obtained for a request (unless the param was overridden).
不幸的是,这对我不起作用,该函数仅在资源初始化时调用一次。
我的情况: 我有一个全局应用程序状态,您可以在应用程序的顶部导航中选择它。此状态会影响大多数调用中的查询参数。 (例如,呼叫有效的日期)。我在服务中维护这个全局状态。
我的服务(模型层)如下所示:
function($resource, ApplicationState) {
return $resource('test/:_id', {
date: ApplicationState.getCurrentTime()
}, {
get: {
method: 'GET'
}
});
}
我希望 ApplicationState.getCurrentTime()
在每次 get 调用时被调用。它只被调用一次。
我创建了一个 plunkr 作为示例。打开浏览器调试控制台,可以看到 ApplicationState.getCurrentTime()
只被调用一次,而不是每次单击按钮时都被调用。
http://plnkr.co/edit/qeoIUuzFCqnQNdnYp5ZX?p=preview
我做错了什么?有没有更好的方法为某些资源注入动态参数?我知道请求拦截器的概念,但我只在某些服务而不是所有服务上需要它。
感谢您的帮助!
我在 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