我有以下几行:
var app = angular.module('app', []);
app.constant("const", {
foo: "bar",
test: "123"
});
我现在想直接从模块constant
访问app
中的信息。这样的事情不起作用:
console.log(app.constant.const.foo);
我知道你可以将常量注入控制器,服务等并访问信息但是出于我的目的,我想直接从模块中访问它们。
访问已注册的constant
的唯一方法是将其注入控制器/服务/等?
答案 0 :(得分:9)
假设您想以某种方式访问angularjs环境之外的const
。
然后你必须从injector
检索它,有两种方法可以获得注射器:
获取正在运行的angularjs应用程序的当前注入器,如下所示:
var injector = angular.element(document).injector(); // assuming `ng-app` is on the document
injector.get('const');
从现有模块创建新的注入器:
var injector = angular.injector(['ng', 'app']); // note the 'ng' module is required this way
injector.get('const');
示例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);
但是,我没有看到真正的好处;)