【发布时间】:2016-02-17 19:30:18
【问题描述】:
我有一个与控制器的语法以及它们在 AngularJS 中声明的方式有关的问题。我很确定我知道它们是如何工作的,但我的问题与语法有关。
所以我可能会有这样的事情:
// MODULE:
var weatherApp = angular.module("weatherApp", ['ngRoute', 'ngResource']);
// Home Page Controller:
weatherApp.controller('homeController', ['$scope', function($scope) {
// Controller business operation
}]);
第一行声明了weatherApp 变量,它是我的模块并且与我的页面相关联。 module() 是一个将模块名称和该模块使用的依赖项列表作为参数的方法。对吗?
主要问题与控制器定义有关。
weatherApp.controller('homeController', ['$scope', function($scope) {
// Controller business operation
}]);
在前面的weatherApp 变量(我的模块)上,我调用controller() 方法来设置控制器设置。所以第一个参数是控制器名称(在这种情况下是homeController),后面是一个数组,它首先必须包含依赖项列表(在这种情况下只有AngularJS提供的$scope服务),它的最后一个元素是将这些依赖项作为实现控制器行为的输入参数的函数。
为什么 Angular 会这样做?为什么依赖和实现控制器的函数在一个数组中一起传递?
也许我在理解这种行为方面有些困难,因为我来自 Java 背景,其中数组不能包含不同类型的对象,并且函数不是对象。
【问题讨论】:
-
这主要是为了避免缩小/编译错误。
-
我可以向您推荐这份风格指南:github.com/johnpapa/angular-styleguide#controllers。也许初学者最好遵循风格指南,这样你就不会学到错误的东西
标签: javascript angularjs javascript-framework angularjs-controller