为什么angularjs核心需要检测是否已创建模块ngLocale?

时间:2014-04-08 04:01:07

标签: angularjs

在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);

1 个答案:

答案 0 :(得分:1)

原因是因为angularjs缺乏以优雅方式检查模块可用性的能力。因此,框架需要引入一个&#34;模块加载异常&#34;而不是checkModule()或findModule()。对于不存在的模块。

确保模块可以接受一个参数来告诉系统是否可以找不到模块,结果只返回null。

实际上,让模块名称以var mod = angular.module(&#34;?moduleName&#34;)代码路径中的问号开头(而不是在定义模块时)会使它成为一个简单的oneliner代码以省略异常。