vue雙向資料繫結

2021-10-16 01:20:15 字數 829 閱讀 4634

話術:vue中v-model可以實現雙向繫結,其核心思想通過object.definepropery來對vue的資料進行資料劫持。

主要分為四部分

第一部分observer主要是負責對vue資料進行資料劫持,使其資料擁有get和set方法

第二部分指令解析器負責繫結資料和指令,繫結試圖更新方法

第三部分watcher負責資料監聽,當資料發生改變通知訂閱者,呼叫檢視更新函式更新檢視

第四部分mvvm作為資料繫結的入口,整合observer、compile和watcher三者,通過observer來監聽自己的model資料變化,通過compile來解析編譯模板指令,最終利用watcher搭起observer和compile之間的通訊橋梁,達到資料變化 -> 檢視更新;檢視互動變化(input) -> 資料model變更的雙向繫結效果。

object.defineproperty()的理解

作用

object.defineproperty()方法會直接在乙個物件上定義乙個新屬性,或者修改乙個物件的現有屬性,並返回此物件。

引數

object.defineproperty(obj, prop, descriptor)

obj要定義屬性的物件。

prop要定義或修改的屬性的名稱。

descriptor要定義或修改的屬性描述符。(這個引數是乙個物件)

vue雙向資料繫結

1.資料響應式原理 主要是利用object.defineproterty 來自定義object的getter,setter function observe value,cb function definereactive obj,key,val,cb set newval class vue da...

vue雙向資料繫結原理

vue應用的是mvvm框架,view和model分離,然後通過vm雙向資料繫結,div 原生物件即資料 var data 建立乙個 viewmodel 例項 var vm new vue 然而乙個動態資料的繫結,是怎麼實現的呢,首先vue利用es5的defineproperty方法裡的get,set...

模擬Vue雙向資料繫結

function eventemit this.callbacks eventemit.prototype.on function eventname,fn this.callbacks eventname push fn eventemit.prototype.emit function even...