如何在Angular.Constants()中使用的立即调用函数表达式(IIFE)注入$ HTTP



在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);
});

最新更新