【问题标题】:Use dynamic parameters in Angular Resource在 Angular 资源中使用动态参数
【发布时间】:2015-01-20 20:53:52
【问题描述】:

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

我做错了什么?有没有更好的方法将动态参数注入某些资源?我知道请求拦截器的概念,但我只在某些服务上需要这个,而不是全部。

感谢您的帮助!

【问题讨论】:

标签: angularjs angular-resource angularjs-resource


【解决方案1】:

我在 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

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-06-27
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    相关资源
    最近更新 更多