Angularjs 有参数的资源,如何在登录时更新参数?

Angularjs 有参数的资源,如何在登录时更新参数?,angularjs,angular-resource,Angularjs,Angular Resource,我正在编写一个angular 1.6.9应用程序,它使用资源与REST PHP后端通信 资源有一些参数: angular.module('app').factory('BookResource', function($resource, $localStorage) { return $resource('/rest/:roleId/ul/:ulId/book/:id', { roleId: $localStorage.currentUser.roleId,

我正在编写一个angular 1.6.9应用程序,它使用资源与REST PHP后端通信

资源有一些参数:

angular.module('app').factory('BookResource', function($resource, $localStorage) {
  return $resource('/rest/:roleId/ul/:ulId/book/:id',
    {
      roleId: $localStorage.currentUser.roleId,
      ulId  : $localStorage.currentUser.ulId,
      id    : '@id'
    }, {
    update: {
      method: 'PUT' // this method issues a PUT request
    }
  });
});
在这里,您可以看到我使用了两个从本地存储中获取的参数

除了在同一浏览器窗口中更改用户外,其他一切都正常工作。 重新登录时,REST调用使用参数的以前值进行,而不是使用$localStorage中存储的新值(在注销和登录时清除)

SHIFT+REFRESH确实可以解决这个问题,但我想知道是否可以避免在每次用户更改时要求用户进行SHIT+REFRESH,这将发生

一个解决办法是要求他们系统地使用私人导航,但我敢肯定有些人不会,也会抱怨;)

那么,是否有某种方法可以通过编程方式浏览每个资源并在登录时更新它们?

使用函数:

app.factory('BookResource', function($resource, $localStorage) {
  return $resource('/rest/:roleId/ul/:ulId/book/:id',
    {
      roleId: function () { return $localStorage.currentUser.roleId },
      ulId  : function () { return $localStorage.currentUser.ulId },
      id    : '@id'
    }, {
    update: {
      method: 'PUT' // this method issues a PUT request
    }
  });
});
从文档中:

如果参数值是函数,则每次需要为请求获取参数值时都会调用它