vue雙向數(shù)據(jù)綁定指令v-model的用法
v-model,被稱為雙向數(shù)據(jù)綁定指令,就是Vue實(shí)例對數(shù)據(jù)進(jìn)行修改,頁面會(huì)立即感知,相反頁面對數(shù)據(jù)進(jìn)行修改,Vue內(nèi)部也會(huì)立即感知。
v-model 是vue中唯一實(shí)現(xiàn)雙向數(shù)據(jù)綁定的指令。
v-bind
(單向)數(shù)據(jù)綁定,Vue實(shí)例修改數(shù)據(jù),頁面會(huì)感知到,相反頁面修改數(shù)據(jù)Vue實(shí)例不能感知。v-model
(雙向)數(shù)據(jù)綁定,頁面修改數(shù)據(jù),Vue實(shí)例會(huì)感知到,Vue實(shí)例修改數(shù)據(jù),頁面也會(huì)感知到。
基本使用
語法:
<標(biāo)簽 v-model="data成員"></標(biāo)簽>
注意:
- 1.v-model只針對value屬性可以綁定,因此經(jīng)常用在form表單標(biāo)簽中,例如input(輸入框、單選按鈕、復(fù)選框)/select(下拉列表)/textarea(文本域),相反div、p標(biāo)簽不能用。
- 2.v-model只能綁定data成員,不能設(shè)置其他表達(dá)式,否則錯(cuò)誤。
- 3.v-model綁定的成員需提前在data中聲明好。
示例代碼:
<div id="app"> <p>{{ city }}</p> <p><input type="text" :value="city"></p> <p><input type="text" v-model="city"></p> </div>
<script src="./vue.js"></script> <script> var vm = new Vue({ el:'#app', data:{ city:'北京' }, }) </script>
- v-model對應(yīng)的city發(fā)生變化后,其他的{{ }} 和 :value的值也會(huì)發(fā)生變化。
響應(yīng)式
v-model數(shù)據(jù)雙向綁定步驟
1.頁面初始加載,vue實(shí)例的data數(shù)據(jù)渲染給頁面的div容器。
2.頁面通過v-model修改綁定數(shù)據(jù),修改的信息會(huì)直接反饋給vue內(nèi)部的data數(shù)據(jù)。
3.vue的data數(shù)據(jù)發(fā)生變化,頁面上(也包括Vue實(shí)例本身)用到該數(shù)據(jù)的地方會(huì)重新編譯渲染。
2和3步驟在條件滿足情況下會(huì)重復(fù)執(zhí)行。
響應(yīng)式
vue實(shí)例的data數(shù)據(jù)如果發(fā)生變化,那么頁面上(或Vue實(shí)例內(nèi)部其他場合)用到該數(shù)據(jù)的地方會(huì)重新編譯執(zhí)行,這樣就把更新后的內(nèi)容顯示出來了,這個(gè)過程就是“響應(yīng)式”,即上面步驟3。
如果Vue實(shí)例內(nèi)部對變化的數(shù)據(jù)有使用,也會(huì)同步更新編譯執(zhí)行。
注意:響應(yīng)式是Vue中非常重要的機(jī)制。
v-model簡易實(shí)現(xiàn)原理
給input輸入框中定義oninput事件,在該事件中把用戶輸入的信息都給隨時(shí)獲得到,并對data成員進(jìn)行賦值,
data成員變化了,頁面上用到數(shù)據(jù)的地方就重新渲染,達(dá)成簡易雙向綁定的效果。
oninput
:是事件,可以隨時(shí)感知輸入框輸入的信息。
具體設(shè)置:
? <div id="app"> ? ? <h2>v-model簡易原理</h2> ? ? <p>{{city}}</p> ? ? <p><input type="text" :value="city"></p> ? ? <hr /> ? ? <!-- 事件@xxx="方法名稱/js語句" --> ? ? <!-- $event:在vue的事件被綁定元素的行內(nèi)部,代表事件對象 --> ? ? <p><input type="text" :value="city" @input="city = $event.target.value"></p> ? ? ?? ? ? <p><input type="text" :value="city" @input="feel"></p> ? </div>
? <script src="./vue.js"></script> ? <script> ? ? var vm = new Vue({ ? ? ? el:'#app', ? ? ? data:{ ? ? ? ? city:'北京' ? ? ? }, ? ? ? methods:{ ? ? ? ? feel(evt){ ? ? ? ? ? // console.log(evt) ?// InputEvent輸入鍵盤事件對象 ? ? ? ? ? // evt.target: 觸發(fā)當(dāng)前事件的元素節(jié)點(diǎn)dom對象(類似document.getElementById()的返回結(jié)果) ? ? ? ? ? // console.dir(evt.target) ? ? ? ? ? // console.log(evt.target.value) ?// evt.target.value 獲得輸入框當(dāng)前輸入的信息 ? ? ? ? ? // 把輸入框已經(jīng)輸入的信息賦予給city ? ? ? ? ? this.city = evt.target.value ? ? ? ? } ? ? ? } ? ? }) ? </script>
注意:
1.事件聲明沒有小括號(),第一個(gè)形參就是 事件對象。
2.在元素行內(nèi)事件驅(qū)動(dòng)中可以直接使用$event,其也是事件對象。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue?this.$router和this.$route區(qū)別解析及路由傳參的2種方式?&&?this.$route
this.$router?相當(dāng)于一個(gè)全局的路由器對象,包含了很多屬性和對象(比如?history?對象),任何頁面都可以調(diào)用其?push(),?replace(),?go()?等方法,本文給大家介紹Vue中this.$router與this.$route的區(qū)別?及push()方法,感興趣的朋友跟隨小編一起看看吧2023-10-10使用FileReader API創(chuàng)建Vue文件閱讀器組件
這篇文章主要介紹了使用FileReader API創(chuàng)建一個(gè)Vue的文件閱讀器組件,需要的朋友可以參考下2018-04-04Vue3+Spring Framework框架開發(fā)實(shí)戰(zhàn)
這篇文章主要為大家介紹了Vue3+Spring Framework框架開發(fā)實(shí)戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04Vue3中級指南之如何在vite中使用svg圖標(biāo)詳解
在以webpack為構(gòu)建工具的開發(fā)環(huán)境中我們可以很方便的實(shí)現(xiàn)SVG圖標(biāo)的組件化,下面這篇文章主要給大家介紹了關(guān)于Vue3中級指南之如何在vite中使用svg圖標(biāo)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04使用vue.js實(shí)現(xiàn)checkbox的全選和多個(gè)的刪除功能
這篇文章主要介紹了使用vue.js實(shí)現(xiàn)checkbox的全選和多個(gè)的刪除功能,需要的朋友可以參考下2017-02-02el-tree懶加載的實(shí)現(xiàn)以及局部刷新方式
這篇文章主要介紹了el-tree懶加載的實(shí)現(xiàn)以及局部刷新方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04將vue項(xiàng)目打包成電腦端應(yīng)用.exe的完整步驟
最近接了個(gè)小活,其中甲方要求把vue項(xiàng)目打包成exe安裝在windows上,其中有也會(huì)出現(xiàn)一些小問題和優(yōu)化,特此記錄,這篇文章主要給大家介紹了關(guān)于將vue項(xiàng)目打包成電腦端應(yīng)用.exe的完整步驟,需要的朋友可以參考下2023-10-10Vue中引用JSON數(shù)據(jù)的方法小結(jié)
在現(xiàn)代Web開發(fā)中,JSON是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,Vue.js作為一個(gè)流行的前端框架,支持多種方式引入和處理JSON數(shù)據(jù),本文將詳細(xì)介紹幾種在Vue中引用JSON數(shù)據(jù)的方法,需要的朋友可以參考下2024-10-10