摘要:雙向數據綁定指的是,將對象屬性變化與視圖的變化相互綁定。數據雙向綁定已經了解到是通過數據劫持的方式來做數據綁定的,其中最核心的方法便是通過來實現對屬性的劫持,達到監聽數據變動的目的。和允許觀察數據的更改并觸發更新。
1 MVVM
雙向數據綁定指的是,將對象屬性變化與視圖的變化相互綁定。換句話說,如果有一個擁有name屬性的user對象,與元素的內容綁定,當給user.name賦予一個新值,頁面元素節點也會相應的顯示新的數據。同樣的,如果頁面元素(通常是input)上的數據改變,輸入一個新的值會導致user對象中的name屬性發生變化。
MVVM最早由微軟提出來,它借鑒了桌面應用程序的MVC思想,在前端頁面中,把Model用純JavaScript對象表示,View負責顯示,兩者做到了最大限度的分離。
把Model和View關聯起來的就是ViewModel。ViewModel負責把Model的數據同步到View顯示出來,還負責把View的修改同步回Model。
總之一句話,數據與表現分離,當某一個數據改變時,頁面上所有使用這個數據的元素的內容都會改變。下面是一個最簡單的數據綁定的例子,來自Vue2.0源碼閱讀筆記–雙向綁定實現原理,這個例子十分簡單粗暴,就做了三件事:
創建 obj 對象,用來保存數據
監聽 keyup 事件,當事件觸發時,把選定的 input 標簽的值賦給 obj 對象的 hello 屬性。
改變 obj 對象 的 hello 屬性的 set 方法,當 hell 被賦值時,將這個值同時賦值給選中的兩個元素。