AngularJS 控制器控制AngularJS 应用程序的数据。AngularJS 控制器是常规的JavaScript 对象。
AngularJS 应用程序被控制器控制。ng-controller指令定义了应用程序控制器。控制器是JavaScript 对象,由标准的 JavaScript对象的构造函数创建。
来看一个例子:
定义一个控制器应用解析:
AngularJS 应用程序由ng-app定义。应用程序在<div>内运行。ng-controller="myCtrl"属性是一个 AngularJS 指令。用于定义一个控制器。myCtrl函数是一个 JavaScript 函数。
AngularJS 使用$scope对象来调用控制器。在 AngularJS 中, $scope 是一个应用对象(属于应用变量和函数)。
控制器的$scope(相当于作用域、控制范围)用来保存AngularJS Model(模型)的对象。(我所用的$rootScope是$scope的父类,比$scope的域更加大);
控制器在作用域中创建了两个属性(firstName和lastName)。
ng-model指令绑定输入域到控制器的属性(firstName 和 lastName)。
控制器方法
上面的实例演示了一个带有 lastName 和 firstName 这两个属性的控制器对象。
控制器也可以有方法(变量和函数):
拥有变量和函数(方法)的控制器外部文件中的控制器(其实就是把控制器写在一个js文件中,然后引进来就ok,跟引js库类似)
在大型的应用程序中,通常是把控制器存储在外部文件中。只需要把标签<script>中的代码复制到名为 personController.js 的外部文件中即可:
html页面 personController的js文件控制器定义有两个参数, 第一个是控制器名称(字符串), 第二个是一个函数或者数组, 当为函数时, 表示控制器的构造函数, , 当为数组时, 数组前面的元素为构造函数用到的字符串形式的服务, 数组最后一个元素为构造函数, 此时构造函数的参数列表和数组前面元素是一一对应的, 例如:
module.controller("myController", function ($scope, $http, $timeout){
//
});
module.controller("myController", ["$scope", "$http","$timeout", function (scope,http ,timeout ){
//
}]);
AngularJS model 中可以有多个控制器:
例如:
代码可以理解每个定义的控制器,是一个有函数和变量的区域,但是这些区域都是在$scope这个域里面。
网友评论