“Stand Alone”控制器VS angularJS中的模块化控制器

时间:2013-10-15 07:22:02

标签: angularjs angular-routing

我是angularJS的新手。我一直在阅读许多代码示例,我经常看到控制器定义为:

    function MyController($scope) {
            //code here
    };

我使用下面的方法来定义我的控制器,因为我不知道还有其他方法可以做到。

angular.module("csApp.controllers", [])
    .controller("main", function ($scope) {
//code here
};

第一种方法如何运作?我在这里缺少某种命名惯例吗?

使用第一种方法的人是否只是在角度加载后将这些函数放入脚本文件中,只是将这些函数添加为全局变量?

如果控制器未在angularJS中注册,您如何将全局变量连接到路径?

谢谢!

2 个答案:

答案 0 :(得分:3)

AngularJS依赖注入框架总是可以在全局范围内找到控制器构造函数,因为它们本质上是全局的。甚至ng-controller指令也在其文档中有这个

  

全局可访问的构造函数或表达式的名称   当前作用域上的值计算为构造函数。

使用$routeProvider时,您可以为路径定义提供Controller类或使用模块api注册的带引号的控制器名称。这两个是有效的

route :{controller:MainCtrl,...}
route :{controller:'main',...}

基于模块的方法更可取,因为它可以阻止一个方法污染JS全局命名空间。

答案 1 :(得分:1)

您只需初始化模块,然后就可以使用这两种方法声明控制器。

第一种方法可以让您在拥有5个控制器时更容易,更易读,或者如果您想将它们拆分为不同的文件。但他们做同样的工作。您需要做的就是跟踪您的控制器名称。

function MainCtrl($scope) {
    // do your stuff
}

<!-- Using the function name here -->
<ANY ng-controller="MainCtrl">
    <!-- your HTML data -->
</ANY>

API Doc中的更多信息。