在AngularJS源代码中,有一个这样的部分,评论由我添加
try {
angularModule('ngLocale'); //this detect wether ngLocale has been created
} catch (e) {
//if not created , then create it here
angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
}
我了解ngLocale
的工作原理,因为您可以使用
ngLocale
$locale
服务
<script src="../src/ngLocale/angular-locale_fr-ca.js"></script>
但是在AngularJS核心运行之后。因为异常总是抛出,从字面上看,为什么不只是删除检测代码,而只是简单地使用它?
angularModule('ngLocale', []).provider('$locale', $LocaleProvider);
答案 0 :(得分:1)
原因是因为angularjs缺乏以优雅方式检查模块可用性的能力。因此,框架需要引入一个&#34;模块加载异常&#34;而不是checkModule()或findModule()。对于不存在的模块。
确保模块可以接受一个参数来告诉系统是否可以找不到模块,结果只返回null。
实际上,让模块名称以var mod = angular.module(&#34;?moduleName&#34;)代码路径中的问号开头(而不是在定义模块时)会使它成为一个简单的oneliner代码以省略异常。