Vue雙向數據綁定原理

Vue雙向數據綁定的效果的實現,用js實現效果,我覺得是觸發後使用setInterval()刷新實現的,今天沒事瞭解一下:vue

實現雙向數據綁的方法:angularjs

1.發佈者—訂閱者模式(backbone.js);瀏覽器

object.observe() 瀏覽器已廢棄;app

2.髒值檢查(anguar.js);性能

指定事件(ng-click/$http/$location/$interval/$digest(只觸發當前及子做用域的監控)||$apply(可參數,做用域樹上全部監控,推建使用)...)觸發時進入髒值檢測view和model是否變化,決定同步更新,經過$watch/setInterval()定時輪詢檢測數據變更;形象的例子解釋髒檢查機制:雙向綁定

======"髒檢查機制"(dirty-checking)===========事件

$digest:「嘿,watcher1,你的值是什麼?」backbone

watcher1:"是 ‘ngBook’。"作用域

$digest:「好的,你的值改變過嗎?(髒了嗎?)」同步

watcher1:"沒有,$digest先生。"

$digest(心想):這個watcher1的沒改變過,那咱們繼續下一個吧。

.......

$digest:「嘿,watcher2,你的值是什麼?」

watcher2:"報告,是 ‘破狼’。"

$digest:「剛纔被改變嗎?」

watcher2:"已經被改變過了,剛纔的值是‘雪狼’,正等待你的到來呢"

$digest(心想):很好,看來咱們的DOM一會須要更新了。

...繼續watcher3/4/5...的詢問、檢查....最後遍歷所改變的watcher。

缺點:遍歷輪詢watcher消耗性能,特別是單頁面監控數量達到很大數量時候。

=================

$digest和$apply

angularjs雙向數據綁定原理

3.數據劫持;

object.defineProperty()

vue的雙向綁定原理及實現

剖析Vue原理&實現雙向綁定MVVM

相關文章
相關標籤/搜索