AngularJS - 依赖注入 - 测试模块是否存在,如果是,则添加它

时间:2015-07-30 17:53:05

标签: angularjs dependency-injection

在我的Angular App中,我想通过依赖注入将两个模块注入我的App。所以:

var App = angular.module('App', ['ngModule1', 'ngModule2']);

var module1 = angular.module('ngModule1', ['App']);
var module2 = angular.module('ngModule2', ['App']);

但是,如果module2尚不存在或未正确实例化,该怎么办?我想做这样的事情:

 var App = angular.module('App', ['ngModule1']);

   //Test if module2 exists
    try {
        var temp = $injector.get('ngModule2');
    } catch (e) {
        console.log('Injector does not have Module 2!');
    }

 //Do something with temp to add it in App

上面的方法无效,但我想知道在测试后添加模块的正确方法是否存在

1 个答案:

答案 0 :(得分:2)

可以测试并添加它。

var modules = ['existingModule', 'nonexistentModule'].filter(function (module) {
  try {
    return !!angular.module(module);    
  } catch (e) {}
});

angular.module('module', modules);

也可以重新定义模块,但在定义组件并引导它之前执行此操作。

var app;

try {
    app = angular.module('app', ['existingModule', 'debatableModule']);
} catch (e) {
    app = angular.module('app', ['existingModule']);
}

但它可能(并且很可能确实)表明应用程序设计出了问题。

$injector不能达到此目的,并且无法将模块“注入”现有模块。