Angular JS 中的内置方法之$watch

在$apply方法中存在脏检查,首先apply方法会触发evel方法,当evel方法解析成功后,会去触发digest方法,digest方法会触发watch方法。

$watch(watchFn,watchAction,deepWatch)

watchFn: angular表达式或函数的字符串

watchAction(newValue,oldValue,scope): watchFn发生变化会被调用

deepWatch:可选的布尔值 检查被监控的对象的每个属性是否发生变化

$watch会返回一个函数,想要注销这个watch可以使用函数

例如,实现一个当修改用户名超过五次就报警提示的功能

需要注意的是,$watch 仅仅作为一个监视器的存在,不能阻止你继续修改input内的值。

angular.module('MyApp',[])
.controller('ParserController',function($scope){
    $scope.count = 0;
    $scope.$watch('name',function(newVal,oldVal){
        ++$scope.count ;
        if($scope.count > 5){
            alert("hahaha")
        }
    });
});
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <script src="../../src/angular.js"></script>
    <script src="parser.js"></script>
</head>
<body ng-app="MyApp">
    <div ng-controller="ParserController">
        <input ng-model="name">
    </div>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/Pikzas/p/8982690.html