是否可以检查Angular应用程序是否已经运行应用程序模块?

时间:2014-01-27 00:39:17

标签: javascript angularjs

我正在编写一个Angular插件,如果找不到,它会初始化一个角度应用程序模块,但如果有一个已经运行或声明的ng-app,我的应用程序将使用该模块。理想情况下,我的代码如下所示:

// return array of apps, whether from ng-app or manually bootstrap
runningAppModules = angular.getNgApps();

if( !isEmpty(runningAppModules) )
{
    var app = runningAppModules[0];
    // Do something with the already initialized app like register controllers
    // Or add directives
}
else
{
    // manually bootstrap apps
}

1 个答案:

答案 0 :(得分:7)

  try {
    angular.module('module-name-here');
  } 
  catch(e) {
    //not loaded
  }

如果您为不存在的模块调用module()函数,则angular.module('some-name', []);函数将抛出错误,除非您使用try/catch创建一个模块。因此,您可以将其包装在var appElems = document.querySelectorAll('[ng-app]'); for (var i=0; i<appElems.length; ++i) { var appName = appElems[i].getAttribute('ng-app'); try { angular.module(appName); } catch(e) { console.log('Module "'+appName+'" not loaded!'); //create the app angular.module(appName, []); } } 块中以检查模块是否已加载。

<强> Live demo (click).

{{1}}