欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

<!DOCTYPE html>
<html lang="zh-CN" ng-app="app">
<head>
  <meta charset="utf-8">
  <title>angular時(shí)鐘輔助理解$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 則需要手動(dòng)調(diào)用$apply(),以使已經(jīng)改變的$scope及時(shí)的更新到view
        $scope.$apply(updateClock);

        // 這里可以看出 $scope已經(jīng)改變但并未及時(shí)更新到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í)行雙向綁定時(shí)一定會(huì)做的事情:

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

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

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

相關(guān)文章

  • 基于angular實(shí)現(xiàn)樹形二級(jí)表格

    基于angular實(shí)現(xiàn)樹形二級(jí)表格

    這篇文章主要介紹了angular手寫樹形二級(jí)表格的完整代碼,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-10-10
  • AngularJs的UI組件ui-Bootstrap之Tooltip和Popover

    AngularJs的UI組件ui-Bootstrap之Tooltip和Popover

    這篇文章主要介紹了AngularJs的UI組件ui-Bootstrap之Tooltip和Popover,tooltip和popover是輕量的、可擴(kuò)展的、用于提示的指令。具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • AngularJS入門心得之directive和controller通信過程

    AngularJS入門心得之directive和controller通信過程

    Angular JS (Angular.JS) 是一組用來開發(fā)Web頁面的框架、模板以及數(shù)據(jù)綁定和豐富UI組件,接下來通過本文給大家介紹AngularJS入門心得之directive和controller通信過程,對(duì)angularjs相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • AngularJS驗(yàn)證信息框架的封裝插件用法【w5cValidator擴(kuò)展插件】

    AngularJS驗(yàn)證信息框架的封裝插件用法【w5cValidator擴(kuò)展插件】

    這篇文章主要介紹了AngularJS驗(yàn)證信息框架的封裝插件用法,分析了AngularJS表單驗(yàn)證規(guī)則并實(shí)例說明了w5cValidator擴(kuò)展插件的相關(guān)使用技巧,需要的朋友可以參考下
    2016-11-11
  • AngularJS基礎(chǔ) ng-model-options 指令簡單示例

    AngularJS基礎(chǔ) ng-model-options 指令簡單示例

    本文主要介紹AngularJS ng-model-options 指令,這里對(duì)ng-model-options指令的基本資料進(jìn)行整理,有需要的小伙伴可以參考下
    2016-08-08
  • 淺談Angular 的變化檢測(cè)的方法

    淺談Angular 的變化檢測(cè)的方法

    這篇文章主要介紹了淺談Angular 的變化檢測(cè)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • AngularJS監(jiān)聽ng-repeat渲染完成的方法

    AngularJS監(jiān)聽ng-repeat渲染完成的方法

    這篇文章主要介紹了AngularJS監(jiān)聽ng-repeat渲染完成的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • Angularjs實(shí)現(xiàn)上傳圖片預(yù)覽功能

    Angularjs實(shí)現(xiàn)上傳圖片預(yù)覽功能

    本文通過實(shí)例代碼給大家介紹了Angularjs實(shí)現(xiàn)上傳圖片預(yù)覽功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • Webpack 實(shí)現(xiàn) AngularJS 的延遲加載

    Webpack 實(shí)現(xiàn) AngularJS 的延遲加載

    這篇文章主要介紹了Webpack 實(shí)現(xiàn) AngularJS 的延遲加載的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • 使用angularjs創(chuàng)建簡單表格

    使用angularjs創(chuàng)建簡單表格

    AngularJS提供豐富填寫表單和驗(yàn)證。我們可以用ng-click來處理AngularJS點(diǎn)擊按鈕事件,然后使用 $dirty 和 $invalid標(biāo)志做驗(yàn)證的方式。使用novalidate表單聲明禁止任何瀏覽器特定的驗(yàn)證。下面我們來看看如何使用angularjs創(chuàng)建簡單表格
    2016-01-01

最新評(píng)論