视频加载失败

Vue v-model 双向数据绑定

260 字
1 分钟
Vue v-model 双向数据绑定

v-model 在 Vue 中的作用#

v-model 是 Vue 提供的双向数据绑定指令,用于在表单控件(如 input、textarea、select)和组件之间同步数据。

特点:

  • 绑定的数据会随着用户输入自动更新。
  • 适用于 input、textarea、select 等表单控件。
  • Vue 3 中可以自定义 v-model 绑定的属性。

本质是语法糖#

在原生表单元素上,v-model 约等于「value 绑定 + input 事件回写」:

<input v-model="text" />
<!-- 等价于 -->
<input :value="text" @input="text = $event.target.value" />

修饰符#

<!-- lazy:改为 change 事件触发(失焦才同步) -->
<input v-model.lazy="text" />
<!-- trim:自动去掉首尾空格 -->
<input v-model.trim="text" />
<!-- number:把输入转为数字 -->
<input v-model.number="age" type="number" />

在组件上使用(Vue 3)#

组件上的 v-model 默认展开为 modelValue prop 和 update:modelValue 事件:

<!-- 父组件 -->
<MyInput v-model="keyword" />
<!-- 等价于 -->
<MyInput :model-value="keyword" @update:model-value="keyword = $event" />
// 子组件 MyInput
const props = defineProps(["modelValue"]);
const emit = defineEmits(["update:modelValue"]);

Vue 3 还支持多个双向绑定,通过参数区分:

<MyForm v-model:title="bookTitle" v-model:author="bookAuthor" />

自定义组件也可以声明 v-model 的 arg、事件名与修饰符(defineModel() 更简洁)。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Vue v-model 双向数据绑定
https://blog.81vm3.xyz/posts/vue-v-model/
作者
Blume
发布于
2024-03-18
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
Blume
I build interesting things.
公告
欢迎来到我的博客!
分类
标签
最新动态
站点统计
文章
38
分类
5
标签
98
总字数
23,078
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.8
文章许可
CC BY-NC-SA 4.0
文章目录