最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

3分鐘帶你快速認(rèn)識(shí)Vue3中的v-model

 更新時(shí)間:2022年11月14日 15:44:22   作者:米西呀  
model在vue里面實(shí)現(xiàn)雙向綁定,通過(guò)父節(jié)點(diǎn)向子節(jié)點(diǎn)傳遞參數(shù),子節(jié)點(diǎn)通過(guò)操作再回傳給父節(jié)點(diǎn)的變量,有點(diǎn)像prop和$emit組合使用,下面這篇文章主要給大家介紹了關(guān)于Vue3中v-model的相關(guān)資料,需要的朋友可以參考下

1:什么是 v-model

v-model 是 Vue 內(nèi)置的指令

作為屬性接收一個(gè)變量(不能是常量)綁定到普通組件和自定義組件中

// 作為普通組件的屬性, 只有作為表單內(nèi)的元素屬性時(shí)才會(huì)生效 如:  input  、radio 、checkbox
<template>
	<input v-model='value' />
</template>
// 作為自定義組件的屬性
<template>
	<son-component v-model='value'></son-component>
</template>

v-model 同時(shí)做了兩件事情:屬性綁定和自定義事件綁定

// 內(nèi)置組件
<template>
	<input  type='text' v-model='value' /> 
	// 相當(dāng)于
	<input type='text'  :value='value' @input='value = $event.target.value'  />
</template>
// 自定義子組件
<template>
	<son-component v-model='value'></son-component>
	// 相當(dāng)于
	<son-component :modelValue='value' @update:modelValue='value = $event'></son-component>
<template>

v-model 綁定在自定義組件上時(shí),我們需要手動(dòng)去接收

// 自定義組件
export default{ 
	props: ['modelValue'], // 默認(rèn)名稱為 modelValue
	emits: ['update:modelValue'] // Vue3 新增 emits, 用于接收父組件傳遞的自定義事件
}

2:v-model 的擴(kuò)展

1:自定義名稱

v-model 默認(rèn)綁定的屬性名為:modelValue
v-model 默認(rèn)綁定的事件名為:update:modelValue

// 所以我們需要使用 modelValue 和 update:modelValue 來(lái)接收
export default {
	props: ['modelValue'],
	emits: ['update:modelValue']
}

我們可以自定義 v-model 綁定的名稱

// 父組件
<template>
	<son-component v-model:msg='msg'></son-component> // 使用 v-model:name 來(lái)自定義名稱
</template>
// 子組件
export default {
	props: ['msg'],
	emits: ['update:msg']
}

注意:以上是 Vue3 中接收 v-model 的方法, Vue2 需要使用 model 來(lái)接收

2:內(nèi)置修飾符

v-model 的修飾符能夠?qū)壎ǖ臄?shù)據(jù)做特定處理
Vue 中有內(nèi)置的修飾符,如:.number 、.trim 、.lazy
v-model.number : v-model 綁定在表單組件中不會(huì)出現(xiàn)數(shù)值類型,numer 可以將綁定的字符串轉(zhuǎn)換為數(shù)值
v-model.trim : 去掉綁定數(shù)據(jù)左右兩側(cè)的空格
v-model.lazy : 表單組件綁定時(shí)生效,從原來(lái)綁定的 input 高頻率觸發(fā)事件改為 blur 低頻率觸發(fā)事件來(lái)提高性能

<template>
	<input type='text' v-model.number='value' /> // 將輸入的 string 類型轉(zhuǎn)換為 number 類型
	input 本身不管輸入的是數(shù)字還是單詞等都是 string 類型
</template>

3:自定義修飾符

Vue3 中可以通過(guò) v-model.name 自定義修飾符
自定義的修飾符需要在子組件中用 props 接收 modelModifiers 對(duì)象,這個(gè)對(duì)象下面會(huì)有自定義屬性,值為 true

// 沒(méi)有重命名v-model,僅添加自定義修飾符
<template>
	<son-component  v-model.a='msg' />
</template>
export default {
	props:['modelValue', 'modelModifiers'],
	emits: ['update:modelValue'],
	created() {
		console.log(this.modelModifiers.a) // 值為 true
	}
}

如果自定義了 v-model 的名稱,那么 modelModifiers 要改為 name + Modifiers

// 重命名 v-model ,并且添加自定義修飾符
<template>
	<son-component v-model:msg.a='msg' />
</template>
export default {
	props:['msg', 'msgModifiers'],
	emits: ['update:msg'],
	created() {
		console.log(this.msgModifiers.a) // 值為 true
	}
}

注意:Vue3 中取消了 v-bind 中的 .sync 修飾符

補(bǔ)充:多個(gè) v-model 使用

在 vue3 一個(gè)組件可以使用多個(gè) v-model ,統(tǒng)一了 vue2 的 v-model 和 .sync 修飾符。

使用原理:

<child-comp v-model:name="name" v-model:age="age" /> 
  
  //可翻譯為
<child-comp 
  :name="name" @update:name="name=$event"
  :age="age" @update:age="age=$event" /> 

實(shí)現(xiàn)多個(gè)數(shù)據(jù)雙向綁定完整實(shí)例:

//父組件代碼
<child-comp v-model:name="name" v-model:age="age" /> 
  
 //子組件代碼
<template>
 <div>
  <input type="text" v-model="newName">
  <input type="text" v-model="newAge">
 </div>
</template>
<script>
export default {
 props:{
  name:{
   type:String,
   default:''
  },
  age:{
   type:String,
   default:""
  }
 },
 emits:['update:name','update:age'],
 computed:{
  newName:{
   get:function(){
    return this.name
   },
  set:function(value){
    this.$emit('update:name',value)
   }
 },
 newAge:{
  get:function(){
   return this.age
  },
  set:function(value){
   this.$emit('update:age',value)
  }
  }
 }
}
</script>  

需要注意的是 script 中多了一個(gè) emits 選項(xiàng),你發(fā)現(xiàn)了嗎?

vue3 組件的自定義事件需要定義在 emits 選項(xiàng)中,只要是自定義事件,就需要添加在 emits 中,否則會(huì)有警告。它的優(yōu)點(diǎn):

  • 如果與原生事件相同名時(shí),事件就會(huì)被觸發(fā)兩次,如果在 emits 選項(xiàng)中加入時(shí),當(dāng)作自定義事件處理,只會(huì)觸發(fā)一次。
  • 更好地指示組件的工作方式。
  • 可以校驗(yàn)對(duì)象形式的事件。

總結(jié)

1:v-model 作為指令可以綁定在內(nèi)置組件和自定義組件上

2:相當(dāng)于綁定了 :modelValue 和 @update:modelValue ,需要在子組件中接收

3:v-model:name 重命名

4:v-modle.name 自定義修飾符,使用 props 的 Modifiers 接收

到此這篇關(guān)于Vue3中v-model的文章就介紹到這了,更多相關(guān)Vue3的v-model內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue2升級(jí)到Vue3的教程及避坑指南

    Vue2升級(jí)到Vue3的教程及避坑指南

    隨著Vue3的日益成熟,越來(lái)越多的團(tuán)隊(duì)開(kāi)始考慮將現(xiàn)有Vue2項(xiàng)目升級(jí)到Vue3,作為一次重大版本更新,Vue3在帶來(lái)性能提升和新特性的同時(shí),也引入了一些不兼容的變化,本文將全面解析Vue2到Vue3升級(jí)過(guò)程中需要注意的關(guān)鍵點(diǎn),幫助你順利完成遷移,需要的朋友可以參考下
    2025-04-04
  • 詳解Vue3怎么使用element-plus

    詳解Vue3怎么使用element-plus

    本文主要介紹了Vue3怎么使用element-plus,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • vue彈窗嵌入其它vue頁(yè)面的操作代碼

    vue彈窗嵌入其它vue頁(yè)面的操作代碼

    這篇文章主要介紹了vue彈窗如何嵌入其它vue頁(yè)面,實(shí)現(xiàn)方式是將其他頁(yè)面作為組件傳入,在父頁(yè)面將該組件引入到彈框內(nèi),實(shí)例代碼簡(jiǎn)單易懂需要的朋友可以參考下
    2022-11-11
  • vue.js 雙層嵌套for遍歷的方法詳解, 類似php foreach()

    vue.js 雙層嵌套for遍歷的方法詳解, 類似php foreach()

    今天小編就為大家分享一篇vue.js 雙層嵌套for遍歷的方法詳解, 類似php foreach(),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程

    vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程

    這篇文章主要介紹了vue中實(shí)現(xiàn)路由跳轉(zhuǎn)的三種方式超詳細(xì)教程,其中聲明式router-link實(shí)現(xiàn)跳轉(zhuǎn)最簡(jiǎn)單的方法,可用組件router-link來(lái)替代a標(biāo)簽,每種方式給大家講解的非常詳細(xì)需要的朋友可以參考下
    2022-11-11
  • vue移動(dòng)端時(shí)彈出側(cè)邊抽屜菜單效果

    vue移動(dòng)端時(shí)彈出側(cè)邊抽屜菜單效果

    這篇文章主要介紹了vue移動(dòng)端時(shí)彈出側(cè)邊抽屜菜單,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • vue編寫簡(jiǎn)單的購(gòu)物車功能

    vue編寫簡(jiǎn)單的購(gòu)物車功能

    這篇文章主要為大家詳細(xì)介紹了vue編寫簡(jiǎn)單的購(gòu)物車功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • 在Vue3中使用provide和inject進(jìn)行依賴注入的代碼詳解

    在Vue3中使用provide和inject進(jìn)行依賴注入的代碼詳解

    在現(xiàn)代前端開(kāi)發(fā)中,Vue.js已經(jīng)成為了非常流行的框架之一,它提供了極大的靈活性和可維護(hù)性,今天我們要探討的是Vue?3中的provide和inject功能,這是一種用于在組件樹(shù)中進(jìn)行依賴注入的方法,需要的朋友可以參考下
    2024-06-06
  • vue?parseHTML源碼解析hars?end?comment鉤子函數(shù)

    vue?parseHTML源碼解析hars?end?comment鉤子函數(shù)

    這篇文章主要為大家介紹了vue?parseHTML源碼解析hars?end?comment鉤子函數(shù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • @vue/cli4.x版本的vue.config.js常用配置方式

    @vue/cli4.x版本的vue.config.js常用配置方式

    這篇文章主要介紹了@vue/cli4.x版本的vue.config.js常用配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05

最新評(píng)論

遂川县| 石楼县| 库车县| 敦化市| 明光市| 陆河县| 清水河县| 西和县| 广饶县| 谷城县| 东安县| 克什克腾旗| 冀州市| 阿鲁科尔沁旗| 秭归县| 黄龙县| 攀枝花市| 开阳县| 盐山县| 麟游县| 石屏县| 顺义区| 高台县| 琼结县| 新余市| 海淀区| 沅江市| 若尔盖县| 新沂市| 莱阳市| 衡山县| 大城县| 汉川市| 通山县| 华安县| 西乌| 韶山市| 榆林市| 凭祥市| 浮梁县| 开鲁县|