a

task-7

武汉小课堂

Angular js中的控制器是什么?

分享人:余佳贝

目录

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

在学习angular的过程中,不同于javascript,遇到了许多新的概念,比如指令(directive)、服务(service)、控制器(controller)、模型(model)等。还接触到了MVC这种将数据管理、业务逻辑控制和数据展示分离开,进而使程序的逻辑性和可维护性更强的思想。接下来,我们会分享、讨论一下控制器的用法。

2.知识剖析

2.1什么是控制器?

AngularJS中的控制器是一个常规的js对象,也是一个函数,用来向视图的作用域添加额外的功能.我们用它来给作用域对象设置初始状态,并添加自定义行为. 一般的使用的方法是通过调用模块的controller()方法注册控制器,该方法接收两个参数,第一个参数是控制器名称,第二个参数是一个匿名函数,在该函数中可以声明一个$scope形参,该形参就表示了控制器对应的作用域

我们可以通过一个简单的列子来直观的感受一下:

                    
                
2.2 控制器的作用域范围和继承

在html中使用ng-controller指令实例化控制器时,会产生一个新的作用域对象。在同一个页面的ng-app作用域下可以通过ng-controller实例化多个控制器对象。但是,每个控制器对应的作用域对象只能与ng-controller指令所在标签的开始与结束标签之间的DOM元素上建立数据绑定。

demo1
demo2
2.3 控制器的作用

控制器的作用主要有两个:第一个,scope作用域对象初始化 ;第二个,给scope作用域对象通过一些方法或者函数增加行为 。

demo3

3.常见问题

如何在多个controller中进行信息的沟通?

4.解决方案

方法一:利用作用域继承的原理,子控制器访问父级控制器中的内容。

方法二:使用service服务进行数据传输。

在之前的例子我们提到,controller是相对独立的,两个controller之间,内存是不共享的,同级DOM下,两个controller是无法互相访问其中的属性或者方法的。

那么,在实际项目中,我们会有很多的页面和控制器,不同页面下的controller之间有时候是需要传输数据的,之前我们学习了localStorage,用于页面之间的传参。

其实,官方建议页面之间通过service互相访问。

5.编码实战

6.扩展思考

问题: 在多个controller中进行信息的沟通还有哪些?

ngularJs项目实战: 不同controller作用域之间通信的方式

7.参考文献

参考一:AngularJs入门和进阶

参考二:Angularjs Controller 间通信机制

参考三:angular学习(三)—— Controller

参考四:AngularJS的学习--$on、$emit和$broadcast的使用

参考五:angularJS的controller之间如何正确的通信

8.更多讨论

讨论:大家对angularJs中的控制器还有哪些理解?

鸣谢

感谢大家观看

Contact GitHub API Training Shop Blog About © 2016 GitHub, Inc. Terms Privacy Security Status He