我有几个已定义的模块。我不想将它们全部加载到我的应用程序中。相反,我想基于配置文件加载它们。例如
模块1:
angular.module('section1', [])
单词数:
angular.module('section2', [])
在每个模块中,它都有自己的HTML模板和业务逻辑。然后在app.module.js:
angular.module('app', ['module1', 'module2']);
module1和module2将一起加载。我不想硬编码,相反,我会有一个配置文件,如:
[{'module1': true}, {'module2':false}]
最终,每次启动应用程序时,我都会读取配置文件,然后确定将加载哪些模块以及哪些模块不会加载。在上面的示例中,将加载module1,而模块2将不加载。
我该怎么做?
答案 0 :(得分:1)
你可以manually bootstrap
角度js申请。它将帮助您添加条件并决定加载哪个模块
以下是如何以角度进行手动自举。
angular.element(function() {
if(/* condition */ {
angular.bootstrap(document, ['module1']);
} else {
angular.bootstrap(document, ['module2']);
}
});
答案 1 :(得分:1)
您可以在定义角度模块之前构建模块依赖关系数组,并将数组作为变量传递。如果您完全控制配置文件及其加载方式,则配置文件可能只是依赖项数组。像这样:
var config = ['module1', 'module2'];
angular.module('app', config);
假设您有多个配置文件,然后为该特定上下文加载所需的配置文件。
如果要将所有模块依赖关系配置放在一个文件中,可以将其格式化为:
var config = {
'profileA': [ 'module1' ],
'profileB': [ 'module2' ]
};
var currentProfile = 'profileA';
angular.module('app', config[currentProfile]);
由于它是在定义Angular应用程序之前配置的(因此是自举的),因此Angular不会关心模块依赖性的来源。只要加载了实际模块的.js文件。但是,如果没有浏览器刷新,您将无法更改配置文件。