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