从包含的模块 (config()) 中的超级模块访问常量
Access constants from super module within included modules (config())
我有一个全局模块 'app',其中包括另外两个模块 'app.core' 和 'app.service'。这是基本设置。在两个子模块中,我可以从两个模块访问常量。但是我无法访问在 'app.core' 或 'app.service'.
中的 'app' 中声明的常量
我还使用 angular.bootstrap 来延迟初始化,因为我需要从服务器检索配置。但是在收到配置后我做了 angular.module('app').constant('config', config);所以常量应该被很好地定义..
最后一点,在 'app' 模块配置中,我可以访问配置常量。
有什么想法吗?
'app' 模块常量声明
angular.module('app',[
'app.core',
'app.service'
])
.module('app')
.constant('foo', 'foo')
'app.core' 常量
angular
.module('app.core')
.constant('core', 'core');
在'app.service'中我可以得到核心常量
angular.module('app.services',[]).config(function($injector){
console.log($injector.get('core'));
})
但我无法检索 'app' 常量
angular.module('app.services',[]).config(function($injector){
console.log($injector.get('foo'));
})
会崩溃
在这两种配置中,您都试图访问在单独模块中定义的常量,但没有将该模块定义为依赖项。例如,当 foo
定义在第一个 需要 app.services
的模块上时,app.services
如何访问 foo
地点?
尽管如此,core
仍可用于 app.services
的原因是因为您在定义 app
时以这样的顺序列出了依赖项,而 angular 正好有在 app.services
之前加载 app.core
。但是,定义的依赖项的顺序无关紧要。
为了更正此问题,您应该考虑重构您的模块,以便不存在固有的循环依赖性。例如,考虑使您的配置本身成为一个模块并将其注入到依赖服务中:
angular.module('app', ['app.core', 'app.services'])
angular.module('app.config', [])
.constant('foo', 'foo')
angular.module('app.core', ['app.config'])
.config(function(foo) {})
angular.module('app.services', ['app.config'])
.config(function(foo) {})
另请注意,使用注入器获取常量是不必要的,因为它们可以在配置阶段直接注入。
我有一个全局模块 'app',其中包括另外两个模块 'app.core' 和 'app.service'。这是基本设置。在两个子模块中,我可以从两个模块访问常量。但是我无法访问在 'app.core' 或 'app.service'.
中的 'app' 中声明的常量我还使用 angular.bootstrap 来延迟初始化,因为我需要从服务器检索配置。但是在收到配置后我做了 angular.module('app').constant('config', config);所以常量应该被很好地定义..
最后一点,在 'app' 模块配置中,我可以访问配置常量。
有什么想法吗?
'app' 模块常量声明
angular.module('app',[
'app.core',
'app.service'
])
.module('app')
.constant('foo', 'foo')
'app.core' 常量
angular
.module('app.core')
.constant('core', 'core');
在'app.service'中我可以得到核心常量
angular.module('app.services',[]).config(function($injector){
console.log($injector.get('core'));
})
但我无法检索 'app' 常量
angular.module('app.services',[]).config(function($injector){
console.log($injector.get('foo'));
})
会崩溃
在这两种配置中,您都试图访问在单独模块中定义的常量,但没有将该模块定义为依赖项。例如,当 foo
定义在第一个 需要 app.services
的模块上时,app.services
如何访问 foo
地点?
尽管如此,core
仍可用于 app.services
的原因是因为您在定义 app
时以这样的顺序列出了依赖项,而 angular 正好有在 app.services
之前加载 app.core
。但是,定义的依赖项的顺序无关紧要。
为了更正此问题,您应该考虑重构您的模块,以便不存在固有的循环依赖性。例如,考虑使您的配置本身成为一个模块并将其注入到依赖服务中:
angular.module('app', ['app.core', 'app.services'])
angular.module('app.config', [])
.constant('foo', 'foo')
angular.module('app.core', ['app.config'])
.config(function(foo) {})
angular.module('app.services', ['app.config'])
.config(function(foo) {})
另请注意,使用注入器获取常量是不必要的,因为它们可以在配置阶段直接注入。