在全局创建的模块Vs控制器中创建的控制器可以做什么或不能做什么?

时间:2013-08-14 03:07:57

标签: angularjs angularjs-controller

已经看过各种角度JS示例,我得到的提示是我应该在模块上定义控制器而不是全局定义。

假设我有一个拥有<body ng-app='mymodule'>的应用程序 - 在体内,它可以确认在mymodule中创建的控制器和全局创建的控制器。

  1. 模块上定义的控制器无法访问任何全局 变量与全局控制器相比。是/否?
  2. 此处还有其他重点要点吗?

1 个答案:

答案 0 :(得分:2)

  

与全局控制器相比,模块上定义的控制器无法访问任何全局变量。是吗?

假。全局变量是全球性的。你可以从控制器中访问它们,但你不应该这样做,除非你不关心测试 - 它肯定应该是。

  

此处需要注意的其他要点是什么?

全局控制器不能使用来自其他模块的服务,而是来自Angular本身。如果你想使用在另一个模块(指令,工厂,提供者等)中定义的组件,你必须创建自己的模块并将它们声明为依赖项,这样你就可以在任何需要的位置注入你需要的位。

全球控制器IMO的唯一用途是以简单易懂的方式演示Angular。不要在生产中使用它。

<强>更新

正如@dotnetcoder在评论中指出的那样,显然由于Angular加载模块的方式,如果框架已经加载了该模块,则全局控制器实际上可以从模块访问服务。我纠正了。但是,虽然技术上可行,但我想不出任何人应该这样做的原因,我支持我之前所说的:不要在生产中使用全局控制器。