在 AngularJS 应用程序中有条件地注入模块

Inject modules conditionally in AngularJS app

本文关键字:注入 模块 有条件 AngularJS 应用程序      更新时间:2023-09-26

我的 Angular 应用程序结构是这样的:

应用.js

angular.module('RateRequestApp', [
    'RateRequestApp.services',
    'RateRequestApp.controllers',
    'ui.bootstrap',
    'angular-loading-bar',
    'textAngular',
    'angularFileUpload'
]);

我为不同的页面使用不同的 HTML 文件,但我没有使用Angular 的$route,但我仍然想在具有不同控制器的所有页面中使用相同的应用程序。

如您所见,我正在向我的应用程序注入第三方模块。问题是在某些页面中我不想要其中一些模块,如何在不需要它们的地方避免它们?

是的,你可以这样做:

var myApp = angular.module('RateRequestApp', [
    'RateRequestApp.services',
    'RateRequestApp.controllers',
    'ui.bootstrap',
    'angular-loading-bar'
]);
var lazyModules = ['textAngular', 'angularFileUpload'];
angular.forEach(lazyModules, function(dependency) {
    myApp.requires.push(dependency);
});

在这种情况下,您可以有条件地注入模块。(但请注意,在需要某些配置的情况下,某些模块的延迟加载可能无法正常工作。