Angularjs 将当前登录用户名用于请求 header
Angularjs put current login username to request header
我正在使用 AngularJs 和 Coffee-Script,我需要将当前登录用户名传递给 header 中的后端服务,这意味着我必须通过以下方式检索用户名另一个请求。然而,在 AngularJs 中执行 REST 请求的 $resource 服务似乎是异步的,所以我无法通过以下代码获取用户名:
'use strict'
angular.module('testapp.service').factory 'TestController', [
'$resource', 'userService'
($resource, userService) ->
userService.getUser().then (user) ->
console.log(user.name) # <- line 8
username = user.name # <- line 9
$resource "/api/path", {},
get:
method: 'GET'
headers:
'username': username
]
在第 8 行,我可以将用户名打印到控制台。
对于第 9 行,我无法将其传递给下面的 headers 字段。
每次刷新页面时,控制台都会打印用户名,但是当我点击按钮时,没有再次打印。
请帮忙,任何类型的建议都会有所帮助和感激!
我正在使用 AngularJs 1.4
等待发出 $resource 请求,直到 getUser() 承诺得到解决。
编辑:
在调用 TestController.get 之前,获取用户。当对 getUser() 的承诺得到解决时,将用户名作为参数发送,并将你的 $resource.get 包装在另一个函数中,就像他们在这里:
How to pass headers on the fly to $resource for angularjs
angular.module('testapp.service').factory 'TestController', [
'$resource'
($resource) ->
getWhatevs: (username) ->
return $resource "/api/path", {},
get:
method: 'GET'
headers:
'username': username
}
};
/* The caller */
userService.getUser().then (user) ->
console.log(user.name) # <- line 8
username = user.name # <- line 9
TestController.getWhatevs(username).get()
顺便说一下,TestController 是工厂而不是控制器。
我正在使用 AngularJs 和 Coffee-Script,我需要将当前登录用户名传递给 header 中的后端服务,这意味着我必须通过以下方式检索用户名另一个请求。然而,在 AngularJs 中执行 REST 请求的 $resource 服务似乎是异步的,所以我无法通过以下代码获取用户名:
'use strict'
angular.module('testapp.service').factory 'TestController', [
'$resource', 'userService'
($resource, userService) ->
userService.getUser().then (user) ->
console.log(user.name) # <- line 8
username = user.name # <- line 9
$resource "/api/path", {},
get:
method: 'GET'
headers:
'username': username
]
在第 8 行,我可以将用户名打印到控制台。 对于第 9 行,我无法将其传递给下面的 headers 字段。
每次刷新页面时,控制台都会打印用户名,但是当我点击按钮时,没有再次打印。 请帮忙,任何类型的建议都会有所帮助和感激!
我正在使用 AngularJs 1.4
等待发出 $resource 请求,直到 getUser() 承诺得到解决。
编辑:
在调用 TestController.get 之前,获取用户。当对 getUser() 的承诺得到解决时,将用户名作为参数发送,并将你的 $resource.get 包装在另一个函数中,就像他们在这里:
How to pass headers on the fly to $resource for angularjs
angular.module('testapp.service').factory 'TestController', [
'$resource'
($resource) ->
getWhatevs: (username) ->
return $resource "/api/path", {},
get:
method: 'GET'
headers:
'username': username
}
};
/* The caller */
userService.getUser().then (user) ->
console.log(user.name) # <- line 8
username = user.name # <- line 9
TestController.getWhatevs(username).get()
顺便说一下,TestController 是工厂而不是控制器。