臟查詢的列舉例子 以及自我理解
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8"/>
<title>臟查詢</title>
<script type="text/javascript" src="./angular.min.js"></script>
</head>
<body ng-controller="myController">
{{name}}
<!-- 在頁(yè)面中隨意輸入(也就是ng-model發(fā)生變化) 然后就能觸發(fā)臟查詢 -->
<input type="" ng-model="a">
</body>
<script type="text/javascript">
//臟查詢機(jī)制和angular的雙向綁定機(jī)制有關(guān)系
//在視圖中用ng-model綁定事件時(shí)都會(huì)創(chuàng)建 $watch(監(jiān)聽(tīng))==>$watchList(監(jiān)聽(tīng)列表)
//什么時(shí)候觸發(fā)臟查詢? 依賴angular的服務(wù)或者指令(ng-)
angular.module("myApp",[])
.controller("myController",["$scope","$timeout",function($scope,timeout){
$scope.name="sang";
// setTimeout(function(){//自己定義的查詢
// //正常一秒后頁(yè)面的值會(huì)發(fā)生變化 ,但是沒(méi)有變,這是涉及到臟查詢的機(jī)制
// $scope.name = "new name";//定時(shí)后一秒發(fā)生變化,頁(yè)面并沒(méi)有輸出新值
// //console.log($scope.name)//在控制臺(tái)輸出新的值
// //$scope.$apply();//angular提供的手動(dòng)強(qiáng)制觸發(fā)臟查詢的方法,現(xiàn)在頁(yè)面會(huì)自動(dòng)出現(xiàn)
// },1000)
// -------------------------------------------------------------------------------------------------------
//angular 中內(nèi)置的觸發(fā)臟查詢的模塊 現(xiàn)在不需要$apply來(lái)手動(dòng)觸發(fā)了
//$interval 和 $timeout 是一樣的
$timeout(function(){
$scope.name = "new name"
},1000);
$scope.$watch("name",function(){//監(jiān)聽(tīng)數(shù)據(jù)的變化
console.log(arguments)
})
}])
</script>
</html>```