脏检查(双向数据绑定):$scope.$watch() 监听$scope中的变量值的变化,如果变化就通知视图更新数据;为了避免在$watch()中也改变变量的值,因此$watch()至少进行两次循环($digest()),同时为了避免进入死循环,$digest()最多循环10次。 $digest()是内部底层的一个函数,angular中通常通过$scope.$apply()(底层就是$digest())通知视图进行数据更新。
demo.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body ng-app="App">
<div ng-controller='DemoController'>
<input type="text" ng-model='name'>
<p>{{name}}</p>
</div>
<script src="angular.min.js"></script> <!-- 引入AngularJS框架 -->
<script>
var App = angular.module('App',[]);
App.controller("DemoController",['$scope',function($scope) {
// $watch监听$scope中变量值的变化。
$scope.$watch('name',function(newValue,oldValue) {
console.log(oldValue);
console.log(newValue);
});
}]);
</script>
</body>
</html>