不管是之前项目还是技术分享,都接触过一些MVC的东西,现在又在AngularJS中遇到,重新拿起来总结一下。@H_403_2@
@H_403_2@
MVC框架:@H_403_2@
为什么用:@H_403_2@
2.由于很多逻辑是一模一样的,用MVC方便复用@H_403_2@
但是,MVC只是一种手段而已,终极思想目标就是为了实现模块化与复用!@H_403_2@
@H_403_2@
MVC的实现@H_403_2@
@H_403_2@
实现方式1:@H_403_2@
@H_403_2@
如上图所示,控制器和视图进行双向交互,也负责跟模型进行双向交互,但视图和数据模型并没有双向交互。上图指出一个控制器是可以控制多个视图的,肯定这些视图间存在着某些公用的东西,那如果这些视图之间并没有任何逻辑关系呢?所以这经典情况只适合小型项目,大型的就需要转变一下,如下图实现方式2所示,不同的控制器控制不同的视图,若用到同一个数据模型,那这些控制器,共同使用同一个数据模型就可以了。@H_403_2@
实现方式2:@H_403_2@@H_403_2@
@H_403_2@
事实证明不可取,至于原因,大家还是自己去查吧,嘿嘿~@H_403_2@
那在AngularJS中具体应该怎么来实现通用的控制器呢?请见实现方式3@H_403_2@
@H_403_2@
实现方式3:@H_403_2@@H_403_2@
@H_403_2@
@H_403_2@
代码详情:@H_403_2@
HTML代码:@H_403_2@
@H_403_2@
<!doctype html> <html ng-app> <head> <Meta charset="utf-8"> </head> <body> <div ng-controller="HelloAngular"> <p>{{greeting.text}},Angular</p> </div> </body> <script src="js/angular-1.3.0.js"></script> <script src="HelloAngular_MVC.js"></script> </html>
js代码:@H_403_2@
这里控制器是由function函数HelloAngular来充当的,通过ng-controller这个指令来实现HelloAngular控制器,运行时会先看到greeting.text显示,原因是在页面还没加载出来时,用户是可以看到该内容的,是挺尴尬的,但是我还没弄清楚怎么来避免。@H_403_2@
@H_403_2@
显示结果如下:@H_403_2@
@H_403_2@