在这个plunker(http://plnkr.co/edit/IpewSU)中,我创建了一个工厂'LoggerFactory',它在模块'webapp'中注册。工厂用于控制器'logCtrl'。如果路由是'/ log',则在bootstrap之后加载此控制器。有一个模块'LoggerModule',LoggerFactory应该属于这个模块而不是'webapp'。
当我在引导之前加载工厂时(例如在'webapp'中添加依赖项)我可以在该模块中创建工厂。 Plunker:http://plnkr.co/edit/Fn6rxg
但是在使用它之前加载工厂对于大型应用程序来说不是解决方案......
我缺少什么?是否需要在自己的模块中创建每个工厂以及何时:如何将此模块注入另一个已经引导的模块?
答案 0 :(得分:0)
目前我正在使用此解决方案在angularAMD app中将元素注册到外部模块:
// bind submodules to register their functions here
app.run(function() {
var bindRegister = function(module, type) {
return function() {
module.register[type].apply(null, arguments);
return module['_'+type].apply(null, arguments);
};
};
var t, type, types = ['controller','factory','directive','filter','service','constant','value','animation'];
var m, module, modules = ['AccountModule', 'NoticeModule'];
for (m in modules) {
module = angular.module(modules[m]);
module.register = app.register;
for (t in types) {
type = types[t];
if (typeof(module[type]) == 'function') {
module['_'+type] = module[type];
delete module[type];
module[type] = bindRegister(module, type);
}
}
}
});