AngularJS学习记录-作用域

AngularJS学习记录-作用域


作用域的特点

具体来说作用域分为以下3个特变

  • 它提供了一个$watch方法来监听数据模型的变化,之所以能使用”ng-model”来实现数据双向绑定,就是通过调用该方法进行数据模型的监听,只要有一端发生变化,另外绑定的一段自动进行数据同步
  • 它提供另外一个$apply方法,为各种类型的数据模型改变提供支撑,将它们引入到Angular可控制器的范围中
  • 它为表达式提供了执行的环境,一个表达式必须在拥有该表达式属性的作用域中执行才更加合适,作用域通过提供$scope对象,使所有的表达式都拥有对应的执行环境,也就是上下文对象。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="../js/angular.min.js"></script>
    <style>
        body{
            font-size:12px;
        }
        div{
            margin:8px 0;
        }
    </style>
</head>
<body ng-app="app" ng-controller="myCtr">
    <div>
        <input type="text" ng-model="name" placeholder="请输入姓名">
    </div>
    <div>
        累计变化次数:{{count}}
    </div>
</body>
<script>
     var app = angular.module('app',[]);

     app.controller('myCtr',['$scope',function($scope){

         $scope.count = 0;
         $scope.name = '';
         $scope.$watch('name',function(){
             $scope.count++;
         })

     }]);




</script>


</body>
</html>
源码解析:
在例子中,先定义两个$scope对象的属性"name""count",前者用于使用"ng-model"制定绑定文本框中的内容,后者用于记录文本框中字符内容变化的累计次数。
然后,使用作用域中的$watch方法对$scope中的"name"属性进行监听,当该属性值变化时,将$scope中的"count"属性值累加1,所以,只要在文本框中做任何一次的修改,都会通过"count"属性值反馈至页面中。


之所以可以通过$watch方法监听模型数据发生的变化,主要是因为在Angular的内部,每当我们对已绑定"ng-model"指令的"name"属性进行修改时,其内部的$digest方法就会自动运行一次,检测已绑定的"name"属性是否与上一次$digest方法运行时获取的内容一直。如果不一致,则执行$watch方法绑定的处理函数,即将"count"属性值累加1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值