1. 程式人生 > >angularjs雙向資料繫結原理

angularjs雙向資料繫結原理

angular並不存在定時髒檢測。angular對常用的dom事件,xhr事件等做了封裝, 在裡面觸發進入angular的digest流程。在digest流程裡面, 會從rootscope開始遍歷, 檢查所有的watcher。

談起angular的髒檢查機制(dirty-checking), 常見的誤解就是認為: ng是定時輪詢去檢查model是否變更。
其實,ng只有在指定事件觸發後,才進入$digest cycle:

  • angular系統自帶DOM事件,譬如使用者輸入文字,點選按鈕等。(ng-click)
  • XHR響應事件 ($http)
  • 瀏覽器Location變更事件 ($location)
  • Timer事件($timeout, $interval)
  • 執行$digest()或$apply()