Vue中指令v-model的原理及使用方法
v-model的原理
原理:v-model本質(zhì)上是一個語法糖。例如應(yīng)用在輸入框上,就是value屬性和input事件的合寫。
作用:提供數(shù)據(jù)的雙向綁定
- 數(shù)據(jù)變,視圖跟著變
:value - 視圖變,數(shù)據(jù)跟這變
@input
注意:$event用于在模板中獲取事件的形參。
<template>
<div id="app">
<input v-model="msg" type="text">
<input :value="msg" @input="msg = $event.target.value" type="text" name="" id="">
</div>
</template>
表單類組件封裝 & v-model簡化代碼
表單類組件封裝
父傳子:數(shù)據(jù)應(yīng)該是父組件props傳遞過來的,v-model拆解綁定數(shù)據(jù)
子傳父:監(jiān)聽輸入,子傳父傳值給父組件修改
父組件(使用):
<BaseSelect :cityId="selectId" @事件名="selectId = $event"></BaseSelect>
子組件(封裝):
<select :value="cityId" @chang="handleChange">...</select>
props: { cityId: String },methods: { handleChange (e) { this.$emit('事件名', e.target.value) } }父組件v-model簡化代碼,實現(xiàn)子組件和父組件數(shù)據(jù)雙向綁定。
子組件中:props通過value接收,事件觸發(fā)input
父組件中:v-model給組件直接解綁數(shù)據(jù)(
:value+@input)父組件(使用):
<BaseSelect v-model="selectId"></BaseSelect>
子組件(封裝):
<select :value="cityId" @chang="handleChange">...</select>
props: { value: String }, methods: { handleChange (e) { this.$emit('input', e.target.value) } }
附:v-model結(jié)合radio類型使用
radio單選框的屬性是互斥的,如果使用v-model,可以不使用name就可以互斥。
v-model綁定sex屬性,初始值為“男”,選擇女后sex屬性變成“女”,因為此時是雙向綁定。
<div id="app">
<!-- name屬性radio互斥 使用v-model可以不用name就可以互斥 -->
<label for="male">
<input type="radio" id="male" name="sex" value="男" v-model="sex">男
</label>
<label for="female">
<input type="radio" id="female" name="sex" value="女" v-model="sex">女
</label>
<div>你選擇的性別是:{{sex}}</div>
</div>
<script src="../js/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"zzz",
sex:"男"
},
})
</script>總結(jié)
到此這篇關(guān)于Vue中指令v-model的原理及使用方法的文章就介紹到這了,更多相關(guān)Vue 指令v-model原理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用vue-cli3 創(chuàng)建vue項目并配置VS Code 自動代碼格式化 vue語法高亮問題
這篇文章主要介紹了使用vue-cli3 創(chuàng)建vue項目,并配置VS Code 自動代碼格式化 vue語法高亮問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05
vue中v-if?和v-permission?共同使用的坑及解決方案
這篇文章主要介紹了vue中v-if?和v-permission?共同使用的坑及解決方案的相關(guān)資料,需要的朋友可以參考下2023-07-07
vue-print-nb實現(xiàn)頁面打印功能實例(含分頁打印)
在項目中,有時需要打印頁面的表格,在網(wǎng)上找了一個打印組件vue-print-nb,用了還不錯,所以下面這篇文章主要給大家介紹了關(guān)于vue-print-nb實現(xiàn)頁面打印功能的相關(guān)資料,需要的朋友可以參考下2022-08-08
VUE側(cè)邊導(dǎo)航欄實現(xiàn)篩選過濾的示例代碼
本文主要介紹了VUE側(cè)邊導(dǎo)航欄實現(xiàn)篩選過濾的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05
Vue通過axios調(diào)用json地址數(shù)據(jù)的方法
在現(xiàn)代Web開發(fā)中,前后端分離已成為標(biāo)準(zhǔn)做法,Vue.js作為前端框架中的佼佼者,提供了豐富的API來處理數(shù)據(jù)和服務(wù)端的交互,其中一個常用的庫是axios,本文將詳細(xì)介紹如何在Vue項目中使用axios來調(diào)用JSON數(shù)據(jù),需要的朋友可以參考下2024-09-09
vue3+electron12+dll開發(fā)客戶端配置詳解
本文將結(jié)合實例代碼,介紹vue3+electron12+dll客戶端配置,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06

