我正在编写一个使用Resources与REST PHP后端进行通信的角度1.6.9应用程序。
资源有一些参数:
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,这将会发生。
一种解决方法是让他们系统地使用私人导航,但我很确定有些人不会抱怨并会抱怨;)
那么有没有办法以编程方式浏览每个资源并在登录时更新它们?
答案 0 :(得分:1)
使用功能:
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
}
});
});
来自文档:
如果参数值是函数,则每次需要获取请求的参数值时都会调用它。