最近学习angularJS,大致将angulaJS的四大特性了解一遍,学习之余希望通过总结来帮自己加固一下对知识的理解,如果有错误或者有其他观点,希望大家指正!!
angularJS的设计思想是以数据为核心的,对DOM操作进行的底层的封装,所以我们在进行编码时基本用不到DOM操作,和常见的jQuery以及bootstrap大不相同。angular JS中有许多基础指令在示例代码中用到就不再解释了。
angularJS的四大特性:1.采用MVC设计模式
2.双向数据绑定
3.依赖注入
4.模块化开发
一.MVC设计模式
说起MVC设计模式就不得不提一下设计模式这个关键词了,常见的设计模式有23+1种,这个+1就是指MVC了,其他的可以自行百度了解,学过软件工程的可能会了解的多一点,虽然很繁琐,但确实是很有用的东西。
在angularJS中MVC分别代表模型(model),视图(view),控制器(controller)
Model:模型,就是业务数据,前端项目中就是JS变量;
View:业务数据向用户展示的地方,前端项目中就是HTML;
Controller:负责业务数据的增删改查,前端项目中相当于函数。
在angular JS中数据一般创建在controller中便于管理和操作,利用ng-controller指令就可以在View中展示数据了,下面给出示例代码做参考:
<script>
var app=angular.module('myModule2',['ng']);
app.controller('myCtrl2',function($scope){
$scope.price=0;
$scope.number=0;
})
</script>
然后在HTML中展示
<html ng-app='myModule2'>
<head>
</head>
<body>
<div ng-controller='myCtrl2'>
{{peice}}and{{number}}
</div>
</body>
二.双向数据绑定
数据绑定有两个方向,意识从Model到View,二是从View到Model。
1.从Model到View,只要Model中数据发生改变,View中的数据会自动同步更新。许多方法都可以实现此种方向的绑定,例如:{{ }}、ngBind、ngIf、ngRepeat、ngShow、ngChecked,其他的指令没有手动尝试,如果大家有兴趣可以自己敲一敲尝试一下。
2.从View到Model,这种方向的绑定实现方法只有一种,就是ngModel
单行文本输入域,ngMode可以把value属性值绑定到Model变量
复选框,ngModel可以把true/false值绑定到Model变量
单选框,ngModel可以把当前选中的单选框的value值绑定到Model变量
下拉框,ngModel可以把当前选中的option的value值绑定到Model变量
示例代码:
<input type="checkbox" ng-model="isAgree">
<p>input中的内容:{{isAgree}}</p>
三.依赖注入
学过spring的同学可能知道这个概念,对于angular JS来说如果需要那些对象可以在参数中直接写出来,然后就可以在函数的使用了,这些对象不需要你自己创建,它本身已经被angular创建好了,你就可以直接使用了。
module.controller('控制器', function($scope, $interval){})
Angular中的ngController指令在实例化控制器对象时,会根据指定的形参名,创建出控制器所依赖的对象,并注入给控制器对象——依赖注入(Dependency Injection,DI)现象。
注意:
(1)Angular在创建控制器对象时,会根据形参列表中的每个形参的名称来创建依赖的对象,故控制器声明函数不能声明Angular无法识别的形参名——Angular只提供了这一种依赖注入方式——根据形参名来注入依赖的对象!
(2)若项目JS文件使用了类似yuicompressor等压缩程序,默认会把函数的形参名精简为一个字母的形式,会导致Angular的依赖注入失败!解决办法:
module.controller('控制器名', [
'$scope',
'$interval',
'$http',
function(aaa,bbb,ccc){}
])
四.模块化开发
这个按照我自己的理解,是angularJS的一种开发思想,将一个大的工程划分成若干小的部分,便于开发管理和维护。这种概念性的东西大家可以自行百度或者用其他办法搜集资料。