已经看过各种角度JS示例,我得到的提示是我应该在模块上定义控制器而不是全局定义。
假设我有一个拥有<body ng-app='mymodule'>
的应用程序 - 在体内,它可以确认在mymodule中创建的控制器和全局创建的控制器。
答案 0 :(得分:2)
与全局控制器相比,模块上定义的控制器无法访问任何全局变量。是吗?
假。全局变量是全球性的。你可以从控制器中访问它们,但你不应该这样做,除非你不关心测试 - 它肯定应该是。
此处需要注意的其他要点是什么?
全局控制器不能使用来自其他模块的服务,而是来自Angular本身。如果你想使用在另一个模块(指令,工厂,提供者等)中定义的组件,你必须创建自己的模块并将它们声明为依赖项,这样你就可以在任何需要的位置注入你需要的位。
全球控制器IMO的唯一用途是以简单易懂的方式演示Angular。不要在生产中使用它。
<强>更新强>
正如@dotnetcoder在评论中指出的那样,显然由于Angular加载模块的方式,如果框架已经加载了该模块,则全局控制器实际上可以从模块访问服务。我纠正了。但是,虽然技术上可行,但我想不出任何人应该这样做的原因,我支持我之前所说的:不要在生产中使用全局控制器。