在Angular中,我想在angular.constants()
中使用$http
服务使用立即调用函数表达式(IIFE)。
示例:
var app = angular.module("myApp",[]);
app.constant('STATIC',(function ($http) {
$http.get('text.properties').then(function(result){
console.log("In Constant "+ result);
return result;
});
})());
但是这样做会引起错误,说cannot read property get of undifined
本文的第1点说,我们不能将$http
用作对常数的依赖注入。因此,我们可以使用IIFE分配值,然后为什么我们不能将$http
用作同一函数的DI。
您可以将$http
注入.run
.run(function($http){
//do http request, save it into a servce
})
app.Service函数仅在Boottrable时才执行一次。因此,它将仅制作一个$ http。使用常数获取呼叫和填充静态变量。
app.service('STATIC', function($http) {
var static = this;
$http.get('text.properties')
.then(function(result) {
result = result.data;
static.CONSTANT_NAME_1 = result.value1;
static.CONSTANT_NAME_2 = result.value2;
static.CONSTANT_NAME_3 = result.value3;
static.CONSTANT_NAME_4 = result.value4;
static.CONSTANT_NAME_5 = result.value5;
});
});
您可以做到这一点,在哪里注入此处,您可以访问它,例如
app.controller('SomeController1', function(STATIC, $log) {
$log.debug(STATIC.CONSTANT_NAME_1);
});
app.controller('SomeController2', function(STATIC, $log) {
$log.debug(STATIC.CONSTANT_NAME_2);
});