MVC 起源是在1979年,Trygve Reenskaug第一次正式提出了MVC模式。
MVC分别是Model:数据模型层:View;视图层,负责展示;Controller:业务逻辑,这个模式的好处是职责清晰,代码模块化。
问题来了,为什么需要MVC?
1.代码规模越来越大,切分职责时大势所趋。
2.为了复用:很多逻辑时一模一样的。
3.为了后期维护方便:修改一块功能不影响其他功能。
总结:MVC只是手段,终极目标是模块化和复用。
在MVC中,Controller使用过程的注意点:
1.不要试图去复用Controller,一个控制器一般只负责一小块视图。
2.不要在Controller中操作DOM,这不是控制器的职责。(将DOM封装在指令里面)
3.不要在Controller里面做数据格式化,ng有很好用的表单控件。
4.不要在Controller里面做数据过滤操作,ng有$filter服务。
5.一般来说,Controller是不会互相调用的,控制器之间的交互会通过事件进行。
AngularJS的MVC是借助于$scope实现的!!!那么什么是$scope???
$scope是一个POJO(Plain Old JavaScript Object)
$scope提供了一些工具方法$watch()/$apply()
$scope是表达式的执行环境(即作用域)
$scope是一个树型结构,与DOM标签平行
子$scope对象会继承父$scope上的属性与方法
每一个Angular应用只有一个根$scope对象(一般位于ng-app上)
$scope可以传播事件,类似DOM事件,可以向上也可以向下
$scope不仅时MVC基础,也是实现双向数据绑定的基础
可以用angular.element($0).scope()进行调试