直接从Angular模块访问常量

时间:2014-08-11 00:24:12

标签: javascript angularjs

我有以下几行:

var app = angular.module('app', []);
app.constant("const", {
   foo: "bar",
   test: "123"
});

我现在想直接从模块constant访问app中的信息。这样的事情不起作用:

console.log(app.constant.const.foo);

我知道你可以将常量注入控制器,服务等并访问信息但是出于我的目的,我想直接从模块中访问它们。

访问已注册的constant的唯一方法是将其注入控制器/服务/等?

2 个答案:

答案 0 :(得分:9)

假设您想以某种方式访问​​angularjs环境之外的const

然后你必须从injector检索它,有两种方法可以获得注射器:

  1. 获取正在运行的angularjs应用程序的当前注入器,如下所示:

    var injector = angular.element(document).injector(); // assuming `ng-app` is on the document
    injector.get('const');
    
  2. 从现有模块创建新的注入器:

    var injector = angular.injector(['ng', 'app']); // note the 'ng' module is required this way
    injector.get('const');
    
  3. 示例Plunker: http://plnkr.co/edit/ld7LLlr94N7PiqnxY5zH

    希望这有帮助。

答案 1 :(得分:0)

如果你真的想直接访问常量,你可以这样做:

var app = angular.module('app', []);
var app.constants = {foo: "bar", test: "123"};
app.constant("const", app.constants);
console.log(app.constants.foo);

但是,我没有看到真正的好处;)