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

标签 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);

最佳答案

这是因为 AngularJS 缺乏以优雅的方式检查模块可用性的能力。因此,框架需要为不存在的模块引发“模块加载异常”,而不是 checkModule() 或 findModule()。

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

实际上,让模块名称在 var mod = angular.module("?moduleName") 代码路径中以问号开头(而不是在定义模块时)将使其成为一个简单的单行代码来忽略异常。

关于angularjs - 为什么AngularJS核心需要检测模块ngLocale是否已经创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927267/

相关文章:

javascript - 如何检索 restangular 参数的异步值?

javascript - 指令依赖模板来工作

javascript - AngularJS : pass data from controller to controller without factory, 服务或广播?

javascript - 将值从对象数组复制到 AngularJS 中的输入字段

javascript - 停止同一函数内的间隔函数然后恢复它

javascript - Angularjs 将参数从 ng-click 传递到页面

javascript - Angular Js引用错误

ruby-on-rails - rails 4 + AngularJS : templateUrl for directive not found?

javascript - AngularJs:将服务器端渲染的 html 绑定(bind)到 iframe

angularjs - $routeProvider 中的多个 url