最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angularjs 中$apply,$digest,$watch詳解

 更新時間:2016年10月13日 16:45:36   投稿:lqh  
這篇文章主要介紹了angularjs 中$apply,$digest,$watch詳解的相關(guān)資料,需要的朋友可以參考下

如果你對angular的$apply,$digest,$watch似懂非懂,那我相信下面幾句話能讓你深刻理解!

此文針對已經(jīng)了解過$apply,$digest,$watch的同學(xué)。也就是說你已經(jīng)在很多的博客論壇搜索過$apply,$digest,$watch,雖然有點(diǎn)蒙,但似懂非懂的感覺。

如果你從未進(jìn)行過了解,那本文對你將沒有一點(diǎn)幫助!

<!DOCTYPE html>
<html lang="zh-CN" ng-app="app">
<head>
  <meta charset="utf-8">
  <title>angular時鐘輔助理解$apply,$digest,$watch</title>
  <link rel="stylesheet" href="../bootstrap.min.css">
</head>
<body ng-controller="myController">

  <div ng-bind="clock.now"></div>


  <script src="../angular.min.js"></script>
  <script>
    angular.module(‘a(chǎn)pp‘, [])
    .controller(‘myController‘, function($scope, $timeout, $interval) {

      // 第一種
      // $scope.clock = {};
      // var clockFunction = function() {
      //   $scope.clock.now = new Date();
      //   $timeout(function() { // 使用$timeout 來代替setTimeout(),因?yàn)榍罢咭呀?jīng)調(diào)用了$apply()
      //     clockFunction();
      //   }, 1000)
      //   // setTimeout(function() {
      //   //   $scope.$apply(clockFunction);
      //   // }, 1000)
      // }
      // clockFunction();

      // 第二種
      $scope.clock = {
         now: new Date()
      };   
      var updateClock = function() {
        $scope.clock.now = new Date();
      };   
      setInterval(function() { // 如果不使用$interval 則需要手動調(diào)用$apply(),以使已經(jīng)改變的$scope及時的更新到view
        $scope.$apply(updateClock);

        // 這里可以看出 $scope已經(jīng)改變但并未及時更新到view
        // updateClock();
        // console.log($scope.clock.now);
      }, 1000);   
      updateClock();
    })
  </script>
</body>
</html>

準(zhǔn)備開始!

$apply (通知)
$digest(循環(huán))
$watch(監(jiān)聽)

這里可能與英語的翻譯有所差別,但是這不是重點(diǎn),重點(diǎn)是讓你能夠理解

angular在監(jiān)聽數(shù)據(jù)變化并執(zhí)行雙向綁定時一定會做的事情:

通知($apply)angular,告訴他有一個函數(shù)test($apply(test)),需要他幫忙做下臟檢查($digest臟檢查),在做臟檢查的同時監(jiān)聽數(shù)據(jù)變化($watch)并反映到view中

當(dāng)不在angular上下文中的時候,則需要你手動$apply。如果不做$apply雖然angular能夠監(jiān)聽數(shù)據(jù)變化,但他并不會將數(shù)據(jù)及時更新到view,因?yàn)樗⒉恢滥愕臄?shù)據(jù)在什么時候是最新的

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

最新評論

波密县| 兴安县| 梁河县| 拜泉县| 山东省| 栖霞市| 万盛区| 利辛县| 苍南县| 清远市| 黄浦区| 三亚市| 柳河县| 绵阳市| 阿坝县| 大田县| 安顺市| 顺平县| 五莲县| 凤山市| 响水县| 潮州市| 当雄县| 洪江市| 综艺| 巩义市| 河北省| 鄢陵县| 申扎县| 贺兰县| 蚌埠市| 庆元县| 马山县| 金堂县| 广安市| 昌黎县| 襄垣县| 吉林市| 竹山县| 乳山市| 衢州市|