angular 系列五 控制器controller的作用

我们在上一篇angular.js输出hello world .

我们在view中给模型的一个参数name赋值 “hello world” .

这是一种简单的赋值,我们可以在视图中通过 ng 指令(以ng-开头的指令)实现了简单的赋值,如果遇到复杂的逻辑运算操作,那么视图里是无法执行复杂操作的,这时控制器就派上用场了.


简单讲:控制器 controller 就是实现视图和模型之间数据传递,方法调用,改变模型等一系列操作,他是javascript函数(也可以看做类或者类型)


控制器有几点需要注意的地方:

1.一个控制器最好只包含一个视图的业务逻辑.以后你会看到我们的目录结构Client/scripts/controllers 包含很多个控制器脚本.

2.控制器之间不存在相互调用,共用的工具方法和不属于控制器的业务单独抽出来做成一个服务,然后在控制器中注入服务来调用.比如请求服务器拿到数据就应该单独做成服务,毕竟有些数据是很多个控制器共用的.

3.控制器不应该操作DOM.

4.控制器里不应该做数据过滤,因为angular.js 有强大的filter 过滤器.


下面我们在 index.html 页面中写一个最简单的控制器 myCtrl

脚本如下:

        <script type="text/javascript">
	var myApp = angular.module("YIJIEBUYI" , []).
	       controller( "myCtrl", function ($scope) {
	       $scope.name = '一介布衣';
	});
	</script>

首先看到这个控制器监视的应用名 "YIJIEBUYI" ,ng-app可以看做angular.js的一个应用入口.

通过这个入口我们创建了简单的控制器 "myCtrl"  这时你看到了一个对象 $scope ,这个东西我们会单独开博来说明,这里你就把它当做一个上下文环境.

它联通了模型和视图,非常重要.我们给$scope对象属性 name 赋值 "一介布衣",那么在视图中如何访问呢?

<div ng-controller="myCtrl">
	显示文字,<span ng-bind="name" ></span>
</div>

我们在视图中有了angular.js 指令标识 ng-controller ,它指定了控制器名称 "myCtrl" ,而此控制器我们已经在当前页面上实现了脚本.

span标签通过 ng-bind 绑定了模型中的 name 属性的值.

通过上面的控制器我们可以看到$scope的name属性已经赋值 "一介布衣",我们运行页面看下效果.

可以看到控制器里给模型name属性的赋值已经在视图中成功显示出来.


回到顶部