昨天被導(dǎo)師叫去研究了一下vue的雙向數(shù)據(jù)綁定原理。。。本來(lái)以為原理的東西都非常高深,沒想到vue的雙向綁定真的很好理解啊。。。自己動(dòng)手寫了一個(gè)。

傳送門

雙向綁定的思想

雙向數(shù)據(jù)綁定的思想就是數(shù)據(jù)層與UI層的同步,數(shù)據(jù)再兩者之間的任一者發(fā)生變化時(shí)都會(huì)同步更新到另一者。

雙向綁定的一些方法

目前,前端實(shí)現(xiàn)數(shù)據(jù)雙向數(shù)據(jù)綁定的方法大致有以下三種:

1.發(fā)布者-訂閱者模式(backbone.js)

思路:使用自定義的data屬性在HTML代碼中指明綁定。所有綁定起來(lái)的JavaScript對(duì)象以及DOM元素都將“訂閱”一個(gè)發(fā)布者對(duì)象。任何時(shí)候如果JavaScript對(duì)象或者一個(gè)HTML輸入字段被偵測(cè)到發(fā)生了變化,我們將代理事件到發(fā)布者-訂閱者模式,這會(huì)反過(guò)來(lái)將變化廣播并傳播到所有綁定的對(duì)象和元素。

2.贓值檢測(cè)(angular.js)

思路:通過(guò)輪詢的方式檢測(cè)數(shù)據(jù)變動(dòng)。才特定的事件觸發(fā)時(shí)進(jìn)入贓值檢測(cè)。

大致如下:

?   DOM事件,譬如用戶輸入文本,點(diǎn)擊按鈕等。( ng-click )

?   XHR響應(yīng)事件 ( $http )

?   瀏覽器Location變更事件 ( $location )

網(wǎng)友評(píng)論