Vue 雙向繫結

2021-09-23 23:56:14 字數 835 閱讀 1472

在react或者vue這類mvvm框架中使用雙向繫結是很常見的需求,最近專案中在使用vue,今天來談一談vue中雙向繫結的實現。

先來說幾句廢話:什麼是雙向繫結?

把model中的資料繫結到view中,然後更新model時view會自動跟新,這叫單向繫結,而當使用者改變view時model中資料也能自動更新時,這叫雙向繫結!

如何實現vue中的雙向繫結?有兩種方式可供參考:

$emit 自定義事件處理機制

我們先來看一段**:

// 父元件

// 子元件

請輸入// 對應view

我們還從model和view的視角分析,model中的資料就是父元件中的定義的狀態value,view就是子元件的輸入框。

這個過程就像乙個閉環:

v-model指令

v-model是最簡單的實現雙向繫結的方式了,只需要使用該指令繫結model就可以了

data = e.target.value"  />
這兩者的效果是一樣的。 按照這個思路,參考官方文件我們可以實現在自定義元件上使用v-model

// 父元件

// 子元件

但是像單選框、核取方塊我們並不希望利用預設的value和input事件,怎麼處理呢,vue提供了更為通用的寫法。model選項可以解決這類問題

// 子元件

不管是用$emit方法還是使用v-model指令都可以很好的實現雙向繫結,具體使用視情況而定。

Vue雙向繫結

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

vue 雙向繫結

問題 用 只能進行單向繫結 model data view html 如果用 繫結表單元素的值,則使用者修改表單元素的內容,無法自動修改data中的模型變數。意味著vue中永遠拿不到使用者在介面中修改的新值。解決 今後凡是繫結 可輸入,可選擇的 表單元素,必須用雙向繫結,才能在介面修改時,自動更新d...

Vue 雙向繫結

陣列 資料型別處理 if array.isarray value else this observearray value else 陣列重寫 const result original.this args notify change ob.dep.notify 判斷是否為物件 function i...