我正在为http查询实现自定义拦截器。它需要访问$ httpProvider中定义的默认标头。
是否可以将$ httpProvider(不是$ http的实例,因为这导致循环引用)作为对拦截器工厂的依赖注入?
答案 0 :(得分:9)
不,你不能。
提供商是一个对象,它为您返回工厂/服务的功能,并且在>>工厂
之前运行。实际上就是这样:
$http
已经创建且不可变。简而言之:在生成所有实例之前,您只能在引导程序.config()
块中注入提供程序。
答案 1 :(得分:1)
您可以注入INPUT_DIR=${1:=.}
OUTPUT_DIR=${2:=.}
[ -d "$INPUT_DIR" -a -d "$OUTPUT_DIR" ] || {
printf "error: invalid directory specified (INPUT_DIR or OUTPUT_DIR)\n"
exit 1
}
while IFS= read -r file; do
base_file=${file##*/}
output="$OUTPUT_DIR/${base_file%.*}.woff"
ttf2woff "$file" "$output" || exit 1
done < <(find "$INPUT_DIR" -type f -iname "*.ttf")
:
$injector
然后,在一些.factory("MyInterceptor", ["$injector",
function($injector) {
return {
response /* or any other */: function(response) {
var $http = $injector.get("$http");
// here, you have access to $http.defaults.headers,
// see https://docs.angularjs.org/api/ng/service/$http#setting-http-headers
return response;
}
};
}])
块中:
.config()