AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。
通常,我们是通过以下技术来解决静态网页技术在构建动态应用上的不足:
(1) 类库 ——类库是一些函数的集合,它能帮助我们写WEB应用。起主导作用的是你的代码,由你来决定何时使用类库。类库有:jQuery等;
(2)框架 —— 框架是一种特殊的、已经实现了的WEB应用,你只需要对它填充具体的业务逻辑。这里框架是起主导作用的,由它来根据具体的应用逻辑来调用你的代码。框架有:knockout、sproutcore等。
AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷。AngularJS通过使用我们称为标识符(directives)的结构,让浏览器能够识别新的语法。例如:
使用双大括号{{}}语法进行数据绑定;
使用DOM控制结构来实现迭代或者隐藏DOM片段;
支持表单和表单的验证;
能将逻辑代码关联到相关的DOM元素上;
能将HTML分组成可重用的组件。
一、MVC是什么?
起源:1979年,Trygve Reenskaug第一次正式提出了MVC模式。
Model:数据模型层
View:视图层,负责展示
Controller:业务逻辑和控制逻辑
好处:职责清晰,代码模块化。
二、为什么需要MVC?
(1)代码规模越来越大,切分职责是大势所趋;
(2)为了复用;
(3)为了后期维护方便:修改一块功能不影响其他功能。
三、如何使用Controller?
1.Controller的实现方式一
问题:如果“视图1”和“视图2”根本没有任何逻辑,“控制器”的角色就很尴尬!
2.Controller的实现方式二
问题:如果“控制器1”和“控制器2”中有相同的方法怎么办?
3.Controller的实现方式三
注:把通用的方法抽成一个服务,然后用控制器去调用它。
四、Controller使用过程中的注意点
(1)不要试图去复用Controller,一个控制器一般只负责一小块视图。
(2)不要在Controller中操作DOM,这并不是控制器的职责。
(3)不要在Controller中做数据格式化,angular中有很好用的表单控件。
(4)不要在Controller中做数据过滤操作,angular有$filter服务。
(5)一般来说,Controller是不会互相调用的,控制器之间的交互会通过事件进行。