一文秒懂Vue3的v-model

 更新时间:2023年02月07日 15:10:12   作者:米西呀  
v-model 是 Vue 内置的指令作为属性接收一个变量(不能是常量)绑定到普通组件和自定义组件中,本文给大家介绍Vue3的v-model示例代码,感兴趣的朋友跟随小编一起看看吧

1:什么是 v-model

v-model 是 Vue 内置的指令
作为属性接收一个变量(不能是常量)绑定到普通组件和自定义组件中

// 作为普通组件的属性, 只有作为表单内的元素属性时才会生效 如:  input  、radio 、checkbox
<template>
	<input v-model='value' />
</template>
// 作为自定义组件的属性
<template>
	<son-component v-model='value'></son-component>
</template>

v-model 同时做了两件事情:属性绑定和自定义事件绑定

// 内置组件
<template>
	<input  type='text' v-model='value' /> 
	// 相当于
	<input type='text'  :value='value' @input='value = $event.target.value'  />
</template>
// 自定义子组件
<template>
	<son-component v-model='value'></son-component>
	// 相当于
	<son-component :modelValue='value' @update:modelValue='value = $event'></son-component>
<template>

v-model 绑定在自定义组件上时,我们需要手动去接收

// 自定义组件
export default{ 
	props: ['modelValue'], // 默认名称为 modelValue
	emits: ['update:modelValue'] // Vue3 新增 emits, 用于接收父组件传递的自定义事件
}

2:v-model 的扩展

1:自定义名称

v-model 默认绑定的属性名为:modelValue
v-model 默认绑定的事件名为:update:modelValue

// 所以我们需要使用 modelValue 和 update:modelValue 来接收
export default {
	props: ['modelValue'],
	emits: ['update:modelValue']
}

我们可以自定义 v-model 绑定的名称

// 父组件
<template>
	<son-component v-model:msg='msg'></son-component> // 使用 v-model:name 来自定义名称
</template>
// 子组件
export default {
	props: ['msg'],
	emits: ['update:msg']
}

注意:以上是 Vue3 中接收 v-model 的方法, Vue2 需要使用 model 来接收

2:内置修饰符

v-model 的修饰符能够对绑定的数据做特定处理
Vue 中有内置的修饰符,如:.number 、.trim 、.lazy
v-model.number : v-model 绑定在表单组件中不会出现数值类型,numer 可以将绑定的字符串转换为数值
v-model.trim : 去掉绑定数据左右两侧的空格
v-model.lazy : 表单组件绑定时生效,从原来绑定的 input 高频率触发事件改为 blur 低频率触发事件来提高性能

<template>
	<input type='text' v-model.number='value' /> // 将输入的 string 类型转换为 number 类型
	input 本身不管输入的是数字还是单词等都是 string 类型
</template>

3:自定义修饰符

Vue3 中可以通过 v-model.name 自定义修饰符
自定义的修饰符需要在子组件中用 props 接收 modelModifiers 对象,这个对象下面会有自定义属性,值为 true

// 没有重命名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 修饰符

总结

1:v-model 作为指令可以绑定在内置组件和自定义组件上
2:相当于绑定了 :modelValue 和 @update:modelValue ,需要在子组件中接收
3:v-model:name 重命名
4:v-modle.name 自定义修饰符,使用 props 的 Modifiers 接收

到此这篇关于一文秒懂认识Vue3的v-model的文章就介绍到这了,更多相关Vue3的v-model内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3版本网页小游戏设计思路

    vue3版本网页小游戏设计思路

    最近火爆全网的羊了个羊小程序,背景是根据官方介绍,“羊了个羊”是一款闯关消除小游戏,通关率不到0.1%。主要玩法为重叠的各类方块,需要在下方7个栏内完成消除,其特点就是“极难”,也因此成为热门挑战,对vue3版本网页小游戏设计思路感兴趣的朋友跟随小编一起看看吧
    2022-12-12
  • vue 移动端记录页面浏览位置的方法

    vue 移动端记录页面浏览位置的方法

    这篇文章主要介绍了vue 移动端记录页面浏览位置的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • vue项目实现登陆注册效果

    vue项目实现登陆注册效果

    这篇文章主要为大家详细介绍了vue项目实现登陆注册效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • vue面试之new Vue的时候到底做了什么

    vue面试之new Vue的时候到底做了什么

    这篇文章主要介绍了vue面试之new Vue的时候到底做了什么原理及vue加载流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • element上传文件对格式限制的处理方案

    element上传文件对格式限制的处理方案

    最近做项目遇到这样的需求,需要上传的文件格式必须是pdf格式,方便我们查看,本文给大家分享element上传文件对格式限制的处理方案,感兴趣的朋友一起看看吧
    2024-02-02
  • vue-cli5搭建vue项目的实现步骤

    vue-cli5搭建vue项目的实现步骤

    本文主要介绍了vue-cli5搭建vue项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • vue路由传参及获取参数的方式总结

    vue路由传参及获取参数的方式总结

    这篇文章主要介绍了vue路由传参及获取参数的方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue+springboot前后端分离实现单点登录跨域问题解决方法

    vue+springboot前后端分离实现单点登录跨域问题解决方法

    这篇文章主要介绍了vue+springboot前后端分离实现单点登录跨域问题的解决方法,需要的朋友可以参考下
    2018-01-01
  • 关于Vue3过渡动画的踩坑记录

    关于Vue3过渡动画的踩坑记录

    在开发中我们想要给一个组件的显示和消失添加某种过渡动画,可以很好的增加用户体验,下面这篇文章主要给大家介绍了关于Vue3过渡动画踩坑的相关资料,需要的朋友可以参考下
    2021-12-12
  • ElementUI 复杂顶部和左侧导航栏实现示例

    ElementUI 复杂顶部和左侧导航栏实现示例

    本文主要介绍了ElementUI 复杂顶部和左侧导航栏实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04

最新评论