当从Angular 1.2迁移到1.3时,通常建议所有控制器都放在一个模块内(否则它们会中断),即使在模块的配置中添加一行也可以实现同样的目的:
angular.module('app').config(['$controllerProvider',function($controllerProvider) {
$controllerProvider.allowGlobals();
}]);
但不建议这样做,因为它可能会影响未来。
为什么不建议使用后一种方法?
答案 0 :(得分:2)
这是为了避免不必要地污染全局命名空间,并降低其他代码(例如某些非Angular插件)可能会干扰您的代码的风险。
假设您在全局范围内拥有控制器MyController
。该页面中的其他一些Javascript可以设置类似
window.MyController = window.alert;
(取决于代码运行的时间)可以破坏你的Angular应用程序。
答案 1 :(得分:0)
当您使用全局函数作为控制器时,您的函数将污染全局命名空间。可能会有更多机会与其他图书馆发生冲突。
这就是角度1.3的原因,建议将模块内的控制器分组。通过这种方式,您不会污染全局命名空间,也无法组织代码,它也是模块化的。因此,它有助于我们在全局命名空间中占用最少的空间。