成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

詳解vue中v-model和v-bind綁定數據的異同

瀏覽:168日期:2022-12-11 10:50:04

vue的模板采用DOM模板,也就是說它的模板可以當做DOM節點運行,在瀏覽器下不報錯,綁定數據有三種方式,一種是插值,也就是{{name}}的形式,一種是v-bind,還有一種是v-model。{{name}}的形式比較好理解,就是以文本的形式和實例data中對應的屬性進行綁定。比如:

var app = new Vue({ el: ’#app’, template: ’<div @click='toggleName'>{{name}}</div>’, data: { name: ’tom’, }, method: { toggleName() { this.name = this.name === ’tom’ ? ’sony’ : ’tom’ }, },})

上面的字符串模板中,有一個{{name}},它和data.name是綁定的,當data.name發生變化時,視圖也發生變化。

但是v-bind和v-model這兩種綁定比較難區分,特別是在表單元素中,剛開始會混淆到底應該怎么使用。

v-bind

首先來看下v-bind,它的用法是后面加冒號,跟上html元素的attributions,例如:

<p v-bind:class='classed'>

這里的v-bind:class會產生什么效果呢?實際上,首先你可以看下如果不加v-bind:,也就是:<p class='classed'>,這只是一個普通的p元素,含有一個.classed的類,沒有任何數據參與進來。

當加上v-bind:之后,就不一樣了。它的值classed不是字符串,而是vue實例對應的data.classed的這個變量。也就是說data.classed是什么值,它就會給class屬性傳遞什么值,當data.classed發生變化的時候,class屬性也發生變化,這非常適合用在通過css來實現動畫效果的場合。除了class,其他大部分html原始的屬性都可以通過這種方式來綁定,而且為了方便,它可以直接縮寫成冒號形式,例如:

var app = Vue({ el: ’#app’, template: ’<img :src='http://www.piao2010.com/bcjs/src'>’, data: { src: ’’, }, beforeMount() { fetch(...).then(...).then(res => this.src = res.src) // 這里修改了data.src },})

上面這段代碼中,默認情況下data.src是空字符串,也就說不會有圖片顯示出來,但是當從遠端獲取到圖片地址之后,更新了data.src,圖片就會顯示出來了。

v-model

v-model主要是用在表單元素中,它實現了雙向綁定。雙向綁定大家都非常熟了,簡單的說就是默認情況下,它跟上面兩種情況的數據綁定是一樣的,實例的data.name發生變化的時候,對應的試圖中也會發生變化。但是v-model綁定后,它還會反過來,在input中手動輸入新的內容,會反過來修改data.name的值,如果在視圖中其他地方使用到了data.name,那么這個地方就會因為data.name的變化而變化,從而實現關聯動態效果。下面來舉個栗子:

var app = Vue({ el: ’#app’, template: ’<label><input v-model='name'>{{name}}</label>’, data: { name: ’’, },})

上面<input>中綁定了name,那么當input的value發生變化時,data.name就會跟著發生變化,而data.name變化了{{name}}的地方也會跟著變化。

v-model是一種雙向綁定,那么也就是說,你綁定的元素得有機會改變值。所以實際上v-model基本上只會用在input, textarea, select這些表單元素上。

v-bind和v-model混用

有一些情況我們需要v-bind和v-model一起使用。這個時候如果不留神,就會搞亂狀況,分不清哪里應該怎么控制。舉個栗子:

<input :value='name' v-model='body'>

上面就是一個栗子。data.name和data.body,到底誰跟著誰變呢?甚至,它們會不會產生沖突呢?

實際上它們的關系和上面的闡述是一樣的,v-bind產生的效果不含有雙向綁定,所以:value的效果就是讓input的value屬性值等于data.name的值,而v-model的效果是使input和data.body建立雙向綁定,因此首先data.body的值會給input的value屬性,其次,當input中輸入的值發生變化的時候,data.body還會跟著改變。

現在的問題是,當這兩個一起使用的時候,誰都優先級高?誰會無效?實驗證明,v-model將會被使用,v-bind這個時候無效了,因為它正好綁定在value屬性上,如果綁在其他屬性上v-bind是不受影響的。在這種情況下,v-bind失效,即使你修改data.name,input里面不會有任何變化。

這也說明,v-model建立的雙向綁定對輸入型元素input, textarea, select等具有優先權,會強制實行雙向綁定,如果你愿意的話。這說明,在單獨的input中,同時使用v-bind和v-model是沒有必要的,雖然不會造成沖突。

注意上面我說道“單獨”,也就是說,在一組輸入中,它們又要另當別論。一組輸入包括單選組、復選組、下拉選項、下拉選項組。

<label for='value in options'> <input type='checkbox' :value='value' v-model='selected'></label>

在data中,它們是這樣的:

data: { options: [1, 2, 3, 4, 5], selected: [],}

一組復選框,或者一組下拉選項組,也就是select mutiple='true'的情況,它們的結果是一個數組,而非單個值,因此data.selected是一個數組,當一個選項被選中之后,這個選項的value值會被加入到data.selected中(不是按options里面的順序,而是操作過程中的邏輯)。這個時候:value就是有效的,因為它表示把options數組中對應的選項值傳遞給value,并不是雙向綁定的意思,而只是傳值過去(當然,當options中對應的值發生變化時,value值也會變化)。相當于說,v-bind負責value的值,v-model負責選中狀態。當然,v-model是雙向綁定,界面上你去勾選會影響data.selected的值,你在程序中操作了data.selected,也會反過來影響界面。v-model影響的是勾選效果,而v-bind影響的是值。(實際上,v-bind雖然只是影響值,但是也會影響勾選效果,比如本來一個選框是被勾選的,通過v-bind綁定值發生了變化,那么新來的值就不會在data.selected中,這個選項就不會被勾選。如果沒有被勾選,改變后的值又在data.selected中,那又會被勾選上。)

注意,只有當type='checkbox'是確定的情況下,才會讓上述情況生效,type值不能是動態值,因為v-model被多次綁定同一個變量時,需要去檢查type值,而如果這個時候type是動態的,比如用:type='type'進行動態綁定,就會導致模板編譯報錯。

v-model其實是v-bind和v-on的語法糖

這是vue官方文檔中特別指出的,在閱讀到這一句之前,我還對此很模糊,當閱讀到:

<input v-model='something'>其實是<input v-bind:value='something' v-on:input='something = $event.target.value'>的語法糖時,這種認識上的模糊就被消除了。

我們這篇文章沒有講到v-on,它其實就是一個事件綁定器。我們仔細閱讀一下<input v-bind:value='something' v-on:input='something = $event.target.value'>,發現它由兩部分組成:v-bind:value和v-on:input,必須是value屬性和input事件,否則也不會等價于v-model,而且input事件里面,正好是something等于當前輸入值。

真因為這一原理,v-model瞬間就不再難理解了。

小結

總之,要區分v-bind和v-model,只需要記住三句話:

1. v-bind是數據綁定,沒有雙向綁定效果,但不一定在表單元素上使用,任何有效元素上都可以使用;2. v-model是雙向綁定,基本上只用在表單元素上;3. 當v-bind和v-model同時用在一個元素上時,它們各自的作用沒變,但v-model優先級更高,而且需區分這個元素是單個的還是一組出現的。

到此這篇關于詳解vue中v-model和v-bind綁定數據的異同的文章就介紹到這了,更多相關vue中v-model和v-bind綁定數據內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲精品社区| 偷偷要91色婷婷| 国产精品的网站| www.欧美精品一二区| 欧美日韩激情一区| 视频一区欧美精品| 亚洲一区欧美激情| 一区二区三区在线观看视频| 黑丝一区二区| 国产亚洲人成网站| 97超碰欧美中文字幕| 欧美xxx久久| 国产黄人亚洲片| 欧美精品在线一区二区| 美女脱光内衣内裤视频久久影院| 亚洲一区二区伦理| 一个色在线综合| 国产欧美一区二区视频| 亚洲三级久久久| 极品少妇一区二区三区| 中文字幕欧美日本乱码一线二线| 欧美一区激情| 国产欧美精品区一区二区三区 | 最新欧美精品一区二区三区| 欧美体内she精视频在线观看| 久久精品免费在线观看| 欧美a级片网站| 欧美日本国产精品| 国产精品午夜春色av| 91免费国产在线观看| 国产精品美女视频| 一本色道久久| 亚洲一区二区三区国产| 欧美一级专区| 日韩中文字幕区一区有砖一区 | 1区2区3区精品视频| 国产成人免费在线观看| 欧美www视频| 99精品欧美一区二区蜜桃免费| 久久久久久久综合日本| 欧美精品成人| 亚洲三级电影全部在线观看高清| 欧美三级中文字幕| 国产成人小视频| 欧美成人精品高清在线播放| 99精品视频中文字幕| 久久精品一区八戒影视| 伊人精品成人久久综合软件| 一区二区三区四区精品在线视频| 免费久久99精品国产自在现线| 日韩成人免费电影| 欧美日韩国产美| 成人性生交大片免费看视频在线 | 欧美优质美女网站| 国产91综合一区在线观看| 精品久久人人做人人爱| 97超碰欧美中文字幕| 亚洲欧美自拍偷拍| 久久精品国产清高在天天线| 精品系列免费在线观看| 日韩精品专区在线影院重磅| 91在线你懂得| 一区二区中文视频| 久久蜜桃资源一区二区老牛| 国模少妇一区二区三区| 日韩精品一区二区三区中文不卡 | 在线电影一区| 免费看精品久久片| 亚洲精品在线电影| 国语对白精品一区二区| 亚洲3atv精品一区二区三区| 欧美日韩高清一区二区三区| 日韩一区二区精品在线观看| 国产成人精品免费看| 欧美性色黄大片| 国产在线日韩| 丁香六月综合激情| 丝袜美腿亚洲一区| 欧美大片日本大片免费观看| 欧美私模裸体表演在线观看| 日韩欧美电影在线| 亚洲精品一区二区三| 欧美高清日韩| 亚洲一区二区三区免费在线观看| 91伊人久久大香线蕉| 亚洲大尺度视频在线观看| 欧美一区二区三区视频免费 | 国产精品1区2区3区在线观看| 久久久五月婷婷| 中文字幕亚洲视频| 一片黄亚洲嫩模| 成人黄色免费短视频| 性久久久久久久久久久久| 尹人成人综合网| 精一区二区三区| 国产女人aaa级久久久级| 一本色道久久综合亚洲精品高清 | 免费黄网站欧美| 国产色综合一区| 快she精品国产999| 91丨porny丨蝌蚪视频| 亚洲成人久久影院| www国产精品av| 久久精品麻豆| 欧美人与禽猛交乱配视频| 久久精品噜噜噜成人88aⅴ| 日本一区二区三区四区| 欧美亚洲图片小说| 韩日午夜在线资源一区二区| 精品一区免费av| 亚洲日本成人在线观看| 91精品国产91久久久久久一区二区| 精品电影一区| 国产乱子伦一区二区三区国色天香| 亚洲色图欧洲色图婷婷| 欧美一级高清片在线观看| 国产欧美日韩综合一区在线观看| 粉嫩av一区二区三区粉嫩| 亚洲国产精品久久久久秋霞影院 | 国产精品免费一区二区三区在线观看 | 亚洲欧洲精品一区二区三区不卡| 欧美高清dvd| 国产精品久久久对白| 欧美二区在线| 国产福利91精品一区二区三区| 亚洲第一久久影院| 国产精品女上位| 欧美成人性战久久| 欧美影院午夜播放| 亚洲色图自拍| 午夜久久一区| 国产成人精品在线看| 日韩精品高清不卡| 亚洲欧美日韩一区二区三区在线观看| 日韩美女视频一区二区在线观看| 久久久夜精品| 最近看过的日韩成人| 成人国产亚洲欧美成人综合网| 免费的国产精品| 亚洲综合久久久久| 国产精品情趣视频| 精品裸体舞一区二区三区| 在线视频中文字幕一区二区| 亚洲国产精选| 色综合久久中文字幕综合网| 国产成人av电影在线| 免费的国产精品| 日韩精品一卡二卡三卡四卡无卡| 一区二区三区在线视频观看58 | 美脚の诱脚舐め脚责91| 亚洲最新在线观看| 久久精品亚洲精品国产欧美| 欧美一区三区四区| 在线观看免费视频综合| 国产精品亚洲综合| 亚洲成色www久久网站| 欧美在线资源| 色综合久久综合| 91一区二区三区在线观看| 国产成人精品免费| 国产综合久久久久久鬼色 | 国产字幕视频一区二区| 欧美jizzhd精品欧美巨大免费| 国产成人免费视频网站| 国产精品亚洲一区二区三区在线| 秋霞午夜av一区二区三区| 亚洲在线免费播放| 亚洲欧美日本韩国| 18欧美乱大交hd1984| 成人欧美一区二区三区视频网页| 国产精品传媒视频| 亚洲欧洲av色图| 亚洲少妇30p| 亚洲欧洲国产日本综合| 亚洲欧洲另类国产综合| 亚洲视频一区二区在线观看| 亚洲三级电影网站| 亚洲一区二区三区四区在线免费观看 | 三级久久三级久久久| 亚洲一区二区三区四区在线观看| 一区二区三区日韩精品| 一区二区三区四区在线免费观看| 亚洲午夜一区二区| 亚洲国产日产av| 日韩精品五月天| 蜜桃传媒麻豆第一区在线观看| 美女被吸乳得到大胸91| 狠狠网亚洲精品| 国产美女精品在线| 国产精品香蕉一区二区三区| 国产乱码精品一品二品| 日本美女一区二区三区| 日本不卡123| 亚洲精品在线三区| 国产欧美一区二区精品忘忧草 | 亚洲色图一区二区三区| 亚洲永久精品大片| 视频一区欧美日韩| 美日韩一级片在线观看| 久国产精品韩国三级视频|