午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

淺談vue實現(xiàn)雙向事件綁定v-model的原理

瀏覽:238日期:2023-02-11 08:16:10
目錄解釋:總結補充

與js或者jquery直接改變操作dom不同,vue使用v-model實現(xiàn)數(shù)據(jù)的雙向綁定,它會根據(jù)控件類型自動選取正確的方法來更新元素。

v-model就是vue的雙向綁定的指令,能將頁面上控件輸入的值同步更新到相關綁定的data屬性,也會在更新data綁定屬性時候,更新頁面上輸入控件的值

官方文檔這么解釋:

v-model只不過是一個語法糖而已,真正的實現(xiàn)靠的還是

v-bind:綁定響應式數(shù)據(jù) 觸發(fā) input 事件 并傳遞數(shù)據(jù) (核心和重點)

如下代碼

<input v-model='txt'>

本質(zhì)上是

<input :value='txt' @input='txt = $event.target.value'>解釋:

初始化vue實例時候,會遞歸遍歷data的每一個屬性,并且通過defineProperty來監(jiān)聽每一個屬性的get,set方法,從而一旦某個屬性重新賦值,則能監(jiān)聽到變化來操作相應的頁面控制

看下方代碼:

Object.defineProperty(data,'name',{get(){ return data['name'];},set(newVal){ let val=data['name']; if (val===newVal){return; } data['name']=newVal; // 監(jiān)聽到了屬性值的變化,假如node是其對應的input節(jié)點 node.value=newVal;}})總結

一方面modal層通過Object.defineProperty來劫持每個屬性,一旦監(jiān)聽到變化通過相關的頁面元素更新。另一方面通過編譯模板文件,為控件的v-model綁定input事件,從而頁面輸入能實時更新相關data屬性值

那么Object.defineProperty是用來控制一個對象屬性的一些特有操作,比如讀寫權、是否可以枚舉,這里我們主要先來研究下它對應的兩個描述屬性get和set,v-model其實是對其get和set進行重寫操作,get就是在讀取name屬性這個值觸發(fā)的函數(shù),set就是在設置name屬性這個值觸發(fā)的函數(shù)

補充

v-model修飾符:.lazy、.trim和.number

lazy :在每次 input 事件觸發(fā)后將輸入框的值與數(shù)據(jù)進行同步,添加 lazy 修飾符,從而轉(zhuǎn)變?yōu)槭褂?change 事件進行同步

<input v-model.lazy='msg'>

trim :去除字符串首尾的空格

<input v-model.trim='msg'>

number :將數(shù)據(jù)轉(zhuǎn)化為值類型

<input v-model.number='msg'>

到此這篇關于淺談vue實現(xiàn)雙向事件綁定v-model的原理的文章就介紹到這了,更多相關vue 雙向事件綁定v-model內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Vue
相關文章:
主站蜘蛛池模板: 亚洲污视频 | 欧美日韩国产a | 国产精品日韩av | 久久久久久久久艹 | 国产在线黄色 | 亚洲成人精品在线播放 | 国产精品视频在线免费观看 | 亚洲看片 | 午夜免费成人 | 国产精品自产拍高潮在线观看 | 无限资源欧美 | 国产在线啪 | 欧美精品久久久久久久 | 日韩在线免费观看视频 | 成年黄色网 | 免费观看爱爱视频 | 日韩资源网 | 三级黄色片网站 | 国产a毛片 | 精品欧美激情精品一区 | 福利小视频在线 | 91av麻豆| 欧美大黄视频 | 国产福利视频一区二区 | 九九自拍| 国产免费91 | www.一区二区 | 丝袜超碰 | 婷婷在线综合 | 欧美大片91 | www.黄色 | 超碰一级片 | 超污网站在线观看 | 欧美久久久久久久久久久 | 69xxx免费视频 | 欧美一区二区三区四 | 中文字幕高清在线 | 四虎新网址 | 91在线高清视频 | 国产精品美女久久久久av爽 | 日韩高清二区 |