一尘不染

AngularJS常数

angularjs

可以使用AngularJS将常量注入另一个常量吗?

例如

var app = angular.module('myApp');

app.constant('foo', { message: "Hello" } );

app.constant('bar', ['foo', function(foo) { 
    return { 
        message: foo.message + ' World!' 
    } 
}]);

我需要使用角度常数,因为我需要将其注入配置程序中。即

app.config(['bar', function(bar) {
    console.log(bar.message);
}]);

我知道您只能将常量和提供程序注入到配置例程中,并且我的理解是您可以将依赖项注入到提供程序中,但是,这似乎并不是这种情况下的最佳方法…

在此先感谢您的帮助!


阅读 231

收藏
2020-07-04

共1个答案

一尘不染

没错,将foo和bar都注册为常量是不可能的。

同样,使用提供程序作为解决方法,除了必须将数据存储在提供程序实例中之外,您几乎可以理解:

var app = angular.module('myApp', []);

app.constant('foo', {
    message: 'Hello'
});

app.provider('bar', ['foo', function(foo) {
  this.data = {
    message: foo.message + ' World!'
  };

  this.$get = function() {
    return this.data;
  };
}]);

然后在配置块中,注入栏的提供程序实例(不是栏实例,因为它在配置阶段尚不可用):

app.config(['barProvider', function(barProvider) {
  console.log(barProvider.data.message);
}]);

希望这可以帮助。

2020-07-04