欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Vue3中v-model用法及示例详解

Vue3中v-model用法及示例详解

2025/6/1 23:38:25 来源:https://blog.csdn.net/BillKu/article/details/147264069  浏览:    关键词:Vue3中v-model用法及示例详解

在 Vue 3 中,v-model 是用于实现双向数据绑定的指令,但在语法和功能上相比 Vue 2 有显著改进。以下是详细用法及示例:


一、基础用法:表单元素

在原生表单元素上,v-model 直接绑定数据:

vue

<template><input v-model="message" /><p>输入的内容是:{{ message }}</p>
</template><script setup>
import { ref } from 'vue';
const message = ref('');
</script>

二、自定义组件中的 v-model

在自定义组件中,v-model 默认绑定 modelValue 属性和 update:modelValue 事件:

父组件

vue

<template><ChildComponent v-model="parentValue" />
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
const parentValue = ref('默认值');
</script>
子组件(ChildComponent.vue)

vue

<template><input:value="modelValue"@input="$emit('update:modelValue', $event.target.value)"/>
</template><script setup>
defineProps(['modelValue']);
defineEmits(['update:modelValue']);
</script>

三、多个 v-model 绑定

Vue 3 允许在同一组件上绑定多个 v-model

父组件

vue

<template><UserForm v-model:firstName="first" v-model:lastName="last" />
</template><script setup>
import { ref } from 'vue';
import UserForm from './UserForm.vue';
const first = ref('');
const last = ref('');
</script>
子组件(UserForm.vue)

vue

<template><input :value="firstName" @input="$emit('update:firstName', $event.target.value)" /><input :value="lastName" @input="$emit('update:lastName', $event.target.value)" />
</template><script setup>
defineProps(['firstName', 'lastName']);
defineEmits(['update:firstName', 'update:lastName']);
</script>

四、自定义修饰符

通过 modelModifiers 实现自定义修饰符:

父组件

vue

<template><CustomInput v-model.capitalize="text" />
</template><script setup>
import { ref } from 'vue';
import CustomInput from './CustomInput.vue';
const text = ref('');
</script>
子组件(CustomInput.vue)

vue

<template><input:value="modelValue"@input="emitValue($event.target.value)"/>
</template><script setup>
const props = defineProps({modelValue: String,modelModifiers: { default: () => ({}) }
});
const emit = defineEmits(['update:modelValue']);const emitValue = (value) => {if (props.modelModifiers.capitalize) {value = value.charAt(0).toUpperCase() + value.slice(1);}emit('update:modelValue', value);
};
</script>

五、关键点总结

  1. 默认绑定v-model 默认绑定 modelValue 属性和 update:modelValue 事件。

  2. 多模型绑定:通过 v-model:xxx 语法支持多个双向绑定。

  3. 修饰符处理:通过 props.modelModifiers 可以访问自定义修饰符。

  4. 兼容性:Vue 3 的 v-model 移除了 .sync 修饰符,统一用 v-model:xxx 替代。

通过这些改进,Vue 3 的 v-model 更灵活且语义更清晰,尤其适合复杂组件的数据交互场景。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词