vue中v-model、v-bind和v-on三大指令的區(qū)別詳解
v-model指令
v-model指令用于在表單控件或者組件上創(chuàng)建雙向綁定。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 測(cè)試實(shí)例</title> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </head> <body> <div id="app"> {{msg}} <input type="text" v-model="msg"> </div> <script> var vm=new Vue({ el:"#app", data:{ msg:'hello world', } }) </script> </body> </html>
v-model默認(rèn)是綁定在value屬性上的,所以上述代碼中,v-model后面加“:value”也是可以的,即v-model:value,但一般情況下直接寫(xiě)v-model。
這是上面代碼的運(yùn)行結(jié)果,接下來(lái)我們對(duì)數(shù)據(jù)雙向綁定進(jìn)行測(cè)試。
(1)改變Model的值看View的值如何變化?
通過(guò)控制臺(tái)手動(dòng)改變,,在瀏覽器打開(kāi)開(kāi)發(fā)者模式,在控制臺(tái)輸入vm.msg=“JingYu”,然后按下【Enter】鍵,觀察頁(yè)面中的msg是否會(huì)改變。通過(guò)測(cè)試,我們可以清楚地看到,msg的值會(huì)立即跟著改變。
(2)改變View的值看Model的值如何變化?
這是直接通過(guò)View修改框中的值,然后在控制臺(tái)輸入vm.msg,觀察輸出的值。還是可以很清楚的觀察到View和Model中的值保持一致。
因?yàn)橹挥斜韱卧乜梢耘c用戶進(jìn)行交互,所以v-model指令一般只用于表單控件或者是一些組件中。
補(bǔ)充:model的修飾符:
(1).lazy: 在默認(rèn)情況下,v-model 在每次 input 事件觸發(fā)后將輸入框的值與數(shù)據(jù)進(jìn)行同步 (除了輸入法組合文字時(shí))。你可以添加 lazy 修飾符,從而轉(zhuǎn)變?yōu)槭褂?onchange 事件進(jìn)行同步,當(dāng)在輸入框輸入數(shù)據(jù)時(shí),數(shù)據(jù)并不會(huì)立即改變,當(dāng)光標(biāo)離開(kāi)輸入框以后,數(shù)據(jù)才會(huì)實(shí)現(xiàn)同步改變,示例代碼如下:
v-model.lazy="msg"
(2). .number: 如果想自動(dòng)將用戶的輸入值轉(zhuǎn)為數(shù)值類(lèi)型,把type定義為number類(lèi)型,給 v-model 添加 number 修飾符,當(dāng)用戶輸入數(shù)值類(lèi)型的數(shù)據(jù)時(shí),v-model.number會(huì)自動(dòng)把輸入的數(shù)據(jù)轉(zhuǎn)換為數(shù)值類(lèi)型,注意如果用戶輸入特殊字母e,number屬性不能識(shí)別。
(3).trim: 如果要自動(dòng)過(guò)濾用戶輸入的首尾空白字符,可以給 v-model 添加 trim 修飾符,在輸入框起始時(shí)候多添加幾個(gè)空格,當(dāng)光標(biāo)離開(kāi)之后,trim屬性會(huì)自動(dòng)過(guò)濾收尾空格。
v-bind指令
v-bind指令可以用來(lái)綁定標(biāo)簽的屬性和樣式。要綁定的內(nèi)容是作為一個(gè)JS變量,因此只需要對(duì)該內(nèi)容編寫(xiě)合法的JS表達(dá)式。
基礎(chǔ)的語(yǔ)法格式為:v-bind:屬性=“值”。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 測(cè)試實(shí)例</title> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </head> <body> <div id="app"> <a v-bind:href="url" rel="external nofollow" >我的博客主頁(yè)</a> </div> <script> var vm=new Vue({ el:"#app", data:{ url:"https://juejin.cn/user/2225839800062215", } }) </script> </body> </html>
運(yùn)行結(jié)果就是一個(gè)超鏈接,點(diǎn)擊之后就可以跳轉(zhuǎn)到我的博客主頁(yè),因?yàn)樵诖a中,我的url地址就是我的博客主頁(yè)。
v-on指令
在傳統(tǒng)前端開(kāi)發(fā)中,相對(duì)一個(gè)按鈕綁定事件時(shí),需要獲取到這個(gè)按鈕的DOM元素,再對(duì)這個(gè)獲取到的元素進(jìn)行事件的綁定。在vue中,對(duì)于DOM元素的操作全部由vue完成,我們只關(guān)注業(yè)務(wù)代碼的實(shí)現(xiàn)。因此我們可以使用vue內(nèi)置的v-on指令來(lái)完成事件的綁定。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 測(cè)試實(shí)例</title> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </head> <body> <div id="app"> <input type="button" value="單擊我" v-on:click="message"> </div> <script> var vm=new Vue({ el:"#app", data:{ }, methods: { message(){ alert("v-on綁定的單擊事件") } } }) </script> </body> </html>
我們是不可以直接把JavaScript代碼寫(xiě)在v-on指令中的,需要自己去定義方法/函數(shù)。那么如何去定義呢?在實(shí)例化vue中提供了一個(gè)methods選項(xiàng),通過(guò)這個(gè)選項(xiàng)可以定義方法。
總結(jié)
1.v-model用來(lái)進(jìn)行data數(shù)據(jù)與頁(yè)面數(shù)據(jù)的雙向綁定。主要用于表單控件,被稱為雙向綁定
2.v-bind是data數(shù)據(jù)對(duì)頁(yè)面標(biāo)簽中屬性的綁定。被稱為單向綁定
3.v-on是methods對(duì)頁(yè)面事件的綁定。
到此這篇關(guān)于vue中v-model、v-bind和v-on三大指令區(qū)別的文章就介紹到這了,更多相關(guān)v-model、v-bind和v-on指令區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue實(shí)現(xiàn)把接口單獨(dú)存放在一個(gè)文件方式
這篇文章主要介紹了vue實(shí)現(xiàn)把接口單獨(dú)存放在一個(gè)文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式
這篇文章主要介紹了Vue-cli中post請(qǐng)求發(fā)送Json格式數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue中使用Element的Table組件實(shí)現(xiàn)嵌套表格
本文主要介紹了Vue中使用Element的Table組件實(shí)現(xiàn)嵌套表格,通過(guò)type="expand"設(shè)置了一個(gè)展開(kāi)按鈕,點(diǎn)擊該按鈕會(huì)顯示與當(dāng)前行關(guān)聯(lián)的子表格內(nèi)容,感興趣的可以了解一下2024-01-01vue+webpack實(shí)現(xiàn)異步加載三種用法示例詳解
這篇文章主要介紹了vue+webpack實(shí)現(xiàn)異步加載的三種用法,文中給大家提到了vue+webpack實(shí)現(xiàn)異步組件加載的代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2018-04-04Vue中scrollIntoView()方法詳解與實(shí)際運(yùn)用舉例
這篇文章主要給大家介紹了關(guān)于Vue中scrollIntoView()方法詳解與實(shí)際運(yùn)用舉例的相關(guān)資料,該scrollIntoView()方法將調(diào)用它的元素滾動(dòng)到瀏覽器窗口的可見(jiàn)區(qū)域,需要的朋友可以參考下2023-12-12Vue 項(xiàng)目中遇到的跨域問(wèn)題及解決方法(后臺(tái)php)
這篇文章主要介紹了Vue 項(xiàng)目中遇到的跨域問(wèn)題及解決方法(后臺(tái)php),前端采用vue框架,后臺(tái)php,具體解決方法,大家參考下本文2018-03-03AntV+Vue實(shí)現(xiàn)導(dǎo)出圖片功能
AntV?組織圖操作完畢以后,需要點(diǎn)擊按鈕將畫(huà)布以圖片的形式導(dǎo)出,這篇文章主要介紹了AntV結(jié)合Vue實(shí)現(xiàn)導(dǎo)出圖片功能,需要的朋友可以參考下2023-01-01