首页 > 代码库 > AngularJS入门

AngularJS入门

基本知识:http://www.runoob.com/angularjs/angularjs-tutorial.html

下载angularjs网址:http://www.bootcdn.cn/angular.js/

AngularJS概念:

1.MVC

封装数据代码(model),应用逻辑代码(controller),页面渲染数据代码(view),三层独立分离

Angular中,视图就是Documenet Object Model, 控制器就是Javascript类,数据模型就是存储在对象的属性中

2.数据绑定

数据绑定可以自动将model和view间的数据同步,Angular实现数据绑定的方式是把model作为数据源,view始终是model的投影,当model发生变化时,会自动反映在view上

3.依赖注入

Angular的依赖注入是获取它所需要的东西,而不创建它们所依赖的东西(一句话 ---> 没事你不要来找我,有事我会去找你。)

4.Angular数据绑定原理:使用脏检查比较数据是否发生了变化

知道变量发生变化一般有两种情况

(1)一是通过固定的接口改变值,如set()方法,缺点是写法繁琐,每个属性都要写一个set方法,

(2)二是脏检查,将对象复制一份快照,在某个时间比较现在对象与快照的值,如果不一样就说明发生了变化,这个策略要保留两份,而且要遍历对象,比较每一个属性,比较消耗性能。angular中所有带ng-开头的事件执行后,都会触发脏检查

页面动态显示时间例子

demo_01.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div ng-app>
        <div ng-controller="firstController">
            <div ng-bind="date"></div>
        </div>
    </div>
    <script type="text/javascript" src="../common/angular/angularjs.js"></script>
    <script type="text/javascript" src="demo_01.js"></script>
</body>
</html>

demo_01.js

/**
 * Created by Administrator on 2017/7/21.
 */

var firstController = function($scope){
    //new 一个时间
    $scope.date = new Date();

    //每隔一秒执行一次
    setInterval(function () {
        //通过 $apply 方法进行脏检查,从而动态改变页面数据
        $scope.$apply(function () {
            $scope.date = new Date();
        });
    },1000);
}

 $apply() 说明:

 $apply()只是进入angular的上下文中,通过 $digest() 方法去触发脏检查,在调用 $digest() 方法时,angular会先执行angular的 $eval() 方法,如果 $eval() 解析失败会抛异常,所以不建议直接调用 $digest() 方法,而应该使用 $apply() 方法,先让 $eval() 方法进行校验,数据合法了再执行下文, $apply() 如果不给参数,会检查$scope里所有监听的属性,推荐给上

 $digest() 说明:

所有 $scope 和 $scope的子类会进行脏检查,脏检查又会触发 $watch() 方法,这样实现了数据的双向绑定

 $watch() 说明:

angularJs内部的wath实现了页面随model的变化而变化,在  $digest() 方法执行时,如果  watch 观察的 value 与上次执行不一样时,就会被触发

 

AngularJS入门