Vue中指令v-model的原理及使用方法
v-model的原理
原理:v-model本質上是一個語法糖。例如應用在輸入框上,就是value屬性和input事件的合寫。
作用:提供數據的雙向綁定
- 數據變,視圖跟著變
:value
- 視圖變,數據跟這變
@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簡化代碼
表單類組件封裝
父傳子:數據應該是父組件props傳遞過來的,v-model拆解綁定數據
子傳父:監(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簡化代碼,實現子組件和父組件數據雙向綁定。
子組件中:props通過value接收,事件觸發(fā)input
父組件中:v-model給組件直接解綁數據(
: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結合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>
總結
到此這篇關于Vue中指令v-model的原理及使用方法的文章就介紹到這了,更多相關Vue 指令v-model原理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用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?共同使用的坑及解決方案的相關資料,需要的朋友可以參考下2023-07-07vue3+electron12+dll開發(fā)客戶端配置詳解
本文將結合實例代碼,介紹vue3+electron12+dll客戶端配置,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-06-06