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語法高亮問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05vue中v-if?和v-permission?共同使用的坑及解決方案
這篇文章主要介紹了vue中v-if?和v-permission?共同使用的坑及解決方案的相關(guān)資料,需要的朋友可以參考下2023-07-07vue-print-nb實現(xiàn)頁面打印功能實例(含分頁打印)
在項目中,有時需要打印頁面的表格,在網(wǎng)上找了一個打印組件vue-print-nb,用了還不錯,所以下面這篇文章主要給大家介紹了關(guān)于vue-print-nb實現(xiàn)頁面打印功能的相關(guān)資料,需要的朋友可以參考下2022-08-08VUE側(cè)邊導(dǎo)航欄實現(xiàn)篩選過濾的示例代碼
本文主要介紹了VUE側(cè)邊導(dǎo)航欄實現(xiàn)篩選過濾的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2023-05-05Vue通過axios調(diào)用json地址數(shù)據(jù)的方法
在現(xiàn)代Web開發(fā)中,前后端分離已成為標準做法,Vue.js作為前端框架中的佼佼者,提供了豐富的API來處理數(shù)據(jù)和服務(wù)端的交互,其中一個常用的庫是axios,本文將詳細介紹如何在Vue項目中使用axios來調(diào)用JSON數(shù)據(jù),需要的朋友可以參考下2024-09-09vue3+electron12+dll開發(fā)客戶端配置詳解
本文將結(jié)合實例代碼,介紹vue3+electron12+dll客戶端配置,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2021-06-06