angularJS--apply() 和digest()方法

來源:互聯網
上載者:User

標籤:

$apply()和$digest()在AngularJS中是兩個核心概念,但是有時候它們又讓人困惑。而為了瞭解AngularJS的工作方式,首先需要瞭解$apply()和$digest()是如何工作的。這篇文章旨在解釋$apply()和$digest()是什麼,以及在日常的編碼中如何應用它們。

 

探索$apply()和$digest()

AngularJS提供了一個非常酷的特性叫做雙向資料繫結(Two-way Data Binding),這個特性大大簡化了我們的代碼編寫方式。資料繫結意味著當View中有任何資料發生了變化,那麼這個變化也會自動地反饋到scope的資料上,也即意味著scope模型會自動地更新。類似地,當scope模型發生變化時,view中的資料也會更新到最新的值。那麼AngularJS是如何做到這一點的呢?當你寫下運算式如{{ aModel }}時,AngularJS在幕後會為你在scope模型上設定一個watcher,它用來在資料發生變化的時候更新view。這裡的watcher和你會在AngularJS中設定的watcher是一樣的:

 

<!DOCTYPE html><html ><head>    <meta  charset="utf-8">    <title>$scope下的apply()和digest()方法</title>    <script src="../js/angularjs.js"></script>    <script src="../js/index6.js"></script></head><body>    <div ng-app="" ng-controller="firstController">        {{date}}    </div></body></html>
var firstController=function($scope){     $scope.date=new Date();/*    setInterval(function(){        // 這裡雖然觸發了時間,但是並沒有進行髒檢查。可以通過apply()方法;        $scope.date = new Date();        },1000);*/    //上述操作被沒有觸發一秒鐘更新一次date.要改變===》    // 要麼用set方法,要麼用髒檢查。以ng-開頭的都會進行髒檢查。    setInterval(function(){        $scope.$apply(function(){            $scope.date = new Date();        });    },1000)    /*    <!-- $scope.$apply()方法可以在angular架構之外執行angular JS運算式 如:DOM時間、setTimeout、XHR或第三方庫-->*/}

我希望這篇文章解釋清楚了$apply和$digest。需要記住的最重要的是AngularJS是否能檢測到你對於model的修改。如果它不能檢測到,那麼你就需要手動地調用$apply()。

angularJS--apply() 和digest()方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.