vue中的雙向繫結

2022-03-04 12:07:54 字數 764 閱讀 2225

我參考了這篇文章:vue.js雙向繫結的實現原理.

其實用事件**就可以實現類似雙向繫結的效果,原理是當檢測到資料改動時會觸發乙個keyup事件或者表單的change事件,通過監聽這個事件做出響應,對應改變dom的內容.

**如下:

通過在輸入框裡面輸入內容,內容會在右邊同步顯示或改變.

需要注意的是,react其實是一種單向資料流,那麼怎麼用react實現雙向繫結呢?就是用的這個原理!

可以點選下面的按鈕體會一下(在輸入框裡面輸入內容,右邊會即時更新):

但是所謂雙向繫結,所謂mvc,所謂mvvm,都強調的是資料的改變,資料(model)即是mvc裡面的m,所以我們在雙向繫結中必須有資料(model).怎麼加進去呢?

原理就是getter和setter函式,重寫setter函式,使資料改變的同時進行一些其它的操作(改變檢視),在檢視改變的時候觸發事件改寫資料.

而怎麼把資料和setter結合在一起呢?那就是利用object.defineproperty方法,給物件定義乙個屬性(資料),同時重寫setter方法.

**如下:

可以點選下面的按鈕體會一下(在輸入框裡面輸入內容,右邊會即時更新):

vue中的資料雙向繫結

學習的過程是漫長的,只有堅持不懈才能到達到自己的目標。1.vue中資料的雙向繫結採用的時候,資料劫持的模式。其實主要是用了es5中的object.defineproperty 來劫持每個屬性的getter,和setter。這也正是vue不相容ie8以下的原因。2.object.defineproer...

Vue雙向繫結

把乙個普通物件 a 傳給 vue 例項作為它的 data 選項,vue.js 將遍歷它的屬性,用object.defineproperty 將它們轉為 getter setter,如圖綠色的部分所示。每次使用者更改data裡的資料的時候,比如a.b 1,setter就會重新通知watcher進行變動...

Vue 雙向繫結

在react或者vue這類mvvm框架中使用雙向繫結是很常見的需求,最近專案中在使用vue,今天來談一談vue中雙向繫結的實現。先來說幾句廢話 什麼是雙向繫結?把model中的資料繫結到view中,然後更新model時view會自動跟新,這叫單向繫結,而當使用者改變view時model中資料也能自動...