angular(双向数据绑定&$digest()方法)

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <input type="text" id="t1" oninput="fun(this)">
    <div id="d1"></div>
    <script>
        var str = "abc";
        var text = document.getElementById('t1');
        var div = document.getElementById("d1");
        text.value = str;
        div.textContent = str;
        function fun(t){
            console.log(t.value);
            str = t.value;
            div.textContent = t.value;
        }
    </script>
</body>
</html>

1、 d i g e s t ( ) 方 法 该 方 法 也 可 以 用 于 触 发 脏 检 查 , 但 是 会 检 查 所 有 的 变 量 , 会 比 较 消 耗 性 能 , 不 建 议 使 用 , 建 议 使 用 digest()方法 该方法也可以用于触发脏检查,但是会检查所有的变量,会比较消耗性能,不建议使用,建议使用 digest()使使apply

2、$watch()方法
a p p l y 执 行 后 , 当 观 察 的 变 量 发 生 改 变 后 , 会 触 发 apply执行后,当观察的变量发生改变后,会触发 applywatch()方法,可以在该方法中得到新值依旧旧值
语法:
$watch(监听的对象,调用的函数,是否深度检测);
-监听的对象:可以是一个对象,也可以是一个表达式、变量或函数
-调用函数:监听的对象发生改变时所触发的函数,可以接收三个参数:newValue(新值)、oldValue(旧值)、scope(作用域的引用)
-是否深度检测:如果设置为true,他会检查对象中的每一个属性,如果希望监听数组的个别元素或对象的某个属性,建议设置为true

-$watch的性能问题
当我们使用$watch观察一个对象时,会申请内存,当我们不再使用时,需要将其释放掉;在我们调用$watch时,会返回一个观察对象,该对象就是一个用于释放$watch的监听函数

3、事件指令
事件指令也会触发脏检查
-ng-click
单击事件
-ng-dblclick
-ng-mouseup
-ng-mouseover
-ng-mousemove

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="angular.min.js"></script>
</head>
<body ng-app="app" ng-controller="controller">
    <div ng-bind = "name"></div>
    <input type="text" ng-model="name">
    <input type="text" ng-model="obj.age">
    <input type="button" ng-click="fun()" value="按钮">
    <script>
        var app = angular.module("app",[]);
        app.controller("controller",function($scope){
            $scope.name = "李四";
            $scope.$watch("name",function(newValue,oldValue,scope){
                console.log("新值:"+newValue);
                console.log("旧值:"+oldValue);
            })

            $scope.obj = {
                name:"王五",
                age:20,
                sex:"男"
            }

            //使用深度检查,去检测对象属性的改变,第三个参数设置为true
            $scope.$watch("obj",function(newValue,oldValue){
                console.log("年龄新值:"+newValue);
                console.log("年龄旧值:"+oldValue);
            },true);

            //释放$watch
            $scope.str = "123";
            var watch = $scope.$watch("str",function(){

            });
            //上面的watch实际上就是用于释放$watch的函数
            watch();//这句代码,意思是调用释放函数,将$watch销毁

            $scope.fun = function(){
                $scope.name = "二ee";
            }
        })
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值