我正在编写一个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
}
答案 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}}