Vue數(shù)據(jù)雙向綁定的實(shí)現(xiàn)方式講解
前言
在web開(kāi)發(fā)應(yīng)用中,很多項(xiàng)目都會(huì)用到表格一列的組件進(jìn)行數(shù)據(jù)的傳輸、獲取和提交,在開(kāi)發(fā)使用中,表格類(lèi)組件數(shù)據(jù)的傳輸,我們一般可以使用v-model將輸入的數(shù)據(jù)同步到data屬性中,這個(gè)指令可以為不同的輸入元素使用不同的屬性,這個(gè)指令一般在form表單中的input等等元素上面來(lái)創(chuàng)建雙向的數(shù)據(jù)綁定。
一、input和textarea
在vue實(shí)戰(zhàn)項(xiàng)目中,vue里面的data屬性可以和input、textarea元素進(jìn)行數(shù)據(jù)綁定。簡(jiǎn)單的解釋就是比如input這個(gè)事件被觸發(fā)的時(shí)候,value里面的數(shù)據(jù)就可以將數(shù)據(jù)聽(tīng)不到Script里面的data數(shù)據(jù)中;當(dāng)綁定的data數(shù)據(jù)發(fā)生改變的時(shí)候,也會(huì)實(shí)時(shí)的同步到value當(dāng)中,從而就可以實(shí)現(xiàn)雙向數(shù)據(jù)綁定。
我們可以通過(guò)代碼進(jìn)行驗(yàn)證,如下:
<!DOCTYPE html>
<html lang="en">
<head>
<title>數(shù)據(jù)雙向綁定</title>
</head>
<body>
<div id="app">
<p>姓名:
<input type="text" v-model="userInfo.xingming">
</p>
<p>郵箱:
<input type="text" v-model="userInfo.youxiang">
</p>
<p>簡(jiǎn)歷:
<textarea name="" id="" cols="30" rows="10" v-model="userInfo.jianli"></textarea>
</p>
<p>姓名:{{userInfo.xingming}}</p>
<p>郵箱:{{userInfo.youxiang}}</p>
<p>簡(jiǎn)歷:{{userInfo.jianli}}</p>
</div>
<script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
userInfo:{
xingming:'',
youxiang:'',
jianli:"編寫(xiě)你的簡(jiǎn)歷:"
}
}
})
</script>
</body>
</html>運(yùn)行結(jié)果:

二、radio和CheckBox
在vue實(shí)戰(zhàn)中,這兩個(gè)元素也和input和textarea元素一樣,都是和data屬性一樣,選擇數(shù)據(jù)綁定,而且CheckBox就是多選元素,可以選擇多個(gè)value,可以在data里面使用一個(gè)數(shù)組進(jìn)行綁定。只要change事件得到觸發(fā),value屬性可以同步到data里面;當(dāng)綁定vue里面的數(shù)據(jù)改變的時(shí)候,就會(huì)同步到check里面,從而實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。我們還是通過(guò)簡(jiǎn)單的代碼實(shí)例來(lái)看一下:
<!DOCTYPE html>
<html lang="en">
<head>
<title>數(shù)據(jù)雙向綁定</title>
</head>
<body>
<div id="app">
<p>性別:
<input type="radio" v-model="userinfo.sex" name="sex" value="男">男
<input type="radio" v-model="userinfo.sex" name="sex" value="女">女
</p>
<p>愛(ài)好:
<input type="checkbox" v-model="userinfo.hobby" value="唱"/>唱
<input type="checkbox" v-model="userinfo.hobby" value="跳"/>跳
<input type="checkbox" v-model="userinfo.hobby" value="rap"/>rap
<input type="checkbox" v-model="userinfo.hobby" value="籃球"/>籃球
</p>
<p>練習(xí)生與否:
<input type="checkbox" v-model="userinfo.lianxisheng" value="練習(xí)生">
</p>
<p>性別:{{userinfo.sex}}</p>
<p>愛(ài)好:{{userinfo.hobby}}</p>
<p>練習(xí)生與否:{{userinfo.lianxisheng}}</p>
</div>
<script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
userinfo:{
sex:'男',
hobby:'【】',
lianxisheng:" "
}
}
})
</script>
</body>
</html>
三、select
select元素也是使用了value屬性和vue里面的data屬性進(jìn)行屬性綁定,當(dāng)change事件觸發(fā)的時(shí)候,value的值就會(huì)同步到vue里面的數(shù)據(jù),當(dāng)綁定的vue數(shù)據(jù)改變的時(shí)候,也會(huì)同步到value,也從而實(shí)現(xiàn)數(shù)據(jù)的雙向綁定。代碼實(shí)例如下:
<!DOCTYPE html>
<html lang="en">
<head>
<title>數(shù)據(jù)雙向綁定</title>
</head>
<body>
<div id="app">
<p>學(xué)歷:
<select name="" id="" v-model="xueli">
<option value="本科">本科</option>
<option value="碩士">碩士</option>
<option value="博士">博士</option>
<option value="博士后">博士后</option>
</select>
</p>
<p>{{xueli}}</p>
</div>
<script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
var vm = new Vue({
el:'#app',
data:{
xueli:"本科"
}
})
</script>
</body>
</html>結(jié)果:

四、雙向綁定的修飾符
這里介紹幾個(gè)雙向綁定的數(shù)據(jù)修飾符。
1、lazy
默認(rèn)情況下, v-model在每次innut事件觸發(fā)后將輸入框的值與數(shù)據(jù)進(jìn)行同步;添加lazy后,只有在enter和輸入框(失焦點(diǎn))的時(shí)候,數(shù)據(jù)才能實(shí)現(xiàn)同步。
2、number
如果要將用戶(hù)的輸入值自動(dòng)地轉(zhuǎn)為數(shù)字類(lèi)型,可以給 v-model添加.number修飾但v-model.number 只能輸入數(shù)字
3、trim
如果要自動(dòng)地過(guò)濾用戶(hù)輸入的首尾空白字符,可以給 v-model添加.trim 修飾符,V-model.trim可以去除前后空格。
我們還還還是通過(guò)代碼實(shí)例來(lái)簡(jiǎn)單的了解一下:
<!DOCTYPE html>
<html lang="en">
<head>
<title>數(shù)據(jù)雙向綁定</title>
</head>
<body>
<div id="app">
<h1>1、數(shù)據(jù):{{val1}}</h1>
<input type="text" v-model.lazy="val1">
<h1>2、數(shù)據(jù):{{val2}}</h1>
<input type="text" v-model.number="val2">
<h1>3、數(shù)據(jù):{{val3}}</h1>
<input type="text" v-model.trim="val3">
</div>
<script src="http://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
<script>
var m = {
val1:1,
val2:2,
val3:''
};
var vm = new Vue({
el:'#app',
data:m,
})
</script>
</body>
</html>運(yùn)行結(jié)果:

在第一個(gè)框輸入數(shù)據(jù)的時(shí)候,輸入框的值和數(shù)據(jù)因?yàn)闆](méi)有數(shù)據(jù)和它進(jìn)行同步顯示,所以當(dāng)光標(biāo)移到第二個(gè)框的時(shí)候,第一個(gè)框就會(huì)引起失焦,這個(gè)時(shí)候就可以顯示出原本輸入的文字,因?yàn)閘azy只有在enter和失焦的時(shí)候,數(shù)據(jù)才能進(jìn)行同步;在第二個(gè)框每次輸入輸入一個(gè)數(shù)值就可以同步顯示;第三個(gè)先是輸入幾個(gè)空格,然后在輸入數(shù)值,只有數(shù)值才能同步,而輸入的空格就會(huì)唄忽視掉,因?yàn)閠rim可以去除前后空格。
到此這篇關(guān)于Vue數(shù)據(jù)雙向綁定的實(shí)現(xiàn)方式講解的文章就介紹到這了,更多相關(guān)Vue數(shù)據(jù)雙向綁定內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解vue-admin和后端(flask)分離結(jié)合的例子
本篇文章主要介紹了詳解vue-admin和后端(flask)分離結(jié)合的例子,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Vue 樣式切換及三元判斷樣式關(guān)聯(lián)操作
這篇文章主要介紹了Vue 樣式切換及三元判斷樣式關(guān)聯(lián)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
簡(jiǎn)單理解vue中實(shí)例屬性vm.$els
這篇文章主要幫助大家簡(jiǎn)單理解vue中實(shí)例屬性vm.$els,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12
Vue ElementUI之Form表單驗(yàn)證遇到的問(wèn)題
這篇文章主要介紹了Vue ElementUI之Form表單驗(yàn)證遇到的問(wèn)題,需要的朋友可以參考下2017-08-08

