0

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

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

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

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

第一种方法是如何工作的?我在这里缺少某种命名约定吗?

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

如果控制器未使用 angularJS 注册,您将如何将全局变量连接到路由?

谢谢!

4

2 回答 2

3

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

可全局访问的构造函数的名称或在当前范围内计算为构造函数的表达式。

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

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

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

于 2013-10-15T08:19:12.397 回答
1

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

例如,当您有 5 个控制器时,或者如果您想将它们拆分到不同的文件中,第一种方法使其更容易和更易读。但他们做同样的工作。您需要做的就是跟踪您的控制器名称。

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

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

API 文档中的更多信息。

于 2013-10-15T08:14:20.847 回答