Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称

Vue3一个组件绑定多个 v-model,自定义 prop 和 event 名称

Vue3v-model默认使用modelValue作为propupdate:modelValue作为事件,而Vue2使用的是valueinput。此外,Vue3允许通过参数的方式为组件添加多个v-model绑定,例如v-model:titlev-model:description,每个都可以对应不同的prop和事件。

例一

一个简单的双绑定
多个v-model绑定,比如用户信息和权限设置。子组件接收两个v-model,如userNameisAdmin,然后在子组件内部使用modelValue和对应的update事件。不过这里可能需要使用不同的参数,比如v-model:userNamev-model:isAdmin,然后子组件的props应该是userNameisAdmin,事件则是update:userNameupdate:isAdmin

基础用法 - 用户信息组件

ChildComponent.vue

<template><div><input :value="userName" @input="$emit('update:userName', $event.target.value)"><inputtype="checkbox":checked="isAdmin"@change="$emit('update:isAdmin', $event.target.checked)"></div>
</template><script setup>
defineProps(['userName', 'isAdmin']);
defineEmits(['update:userName', 'update:isAdmin']);
</script><!-- 父组件使用 -->
<!-- <UserForm v-model:user-name="userData.name" v-model:is-admin="userData.adminStatus" 
/> -->

例二

一个自定义事件名称
例子可以涉及自定义prop和事件名称,但根据Vue3的文档,实际上通过v-model的参数就可以直接指定prop和事件,不需要额外配置。例如,v-model:title="pageTitle"会自动使用title作为propupdate:title作为事件

自定义参数 - 分页组件

Pagination.vue

<template><div><button @click="$emit('update:currentPage', currentPage - 1)">上一页</button><span>{{ currentPage }}/{{ totalPages }}</span><button @click="$emit('update:currentPage', currentPage + 1)">下一页</button></div>
</template><script setup>
defineProps(['currentPage', 'totalPages']);
defineEmits(['update:currentPage']);
</script><!-- 父组件使用 -->
<!-- <Pagination v-model:current-page="page" :total-pages="totalPages"
/> -->

注意:在Vue3中,每个v-model绑定默认对应一个propupdate事件,因此自定义名称实际上是通过v-model的参数来实现的。例如,v-model:userName对应prop userName和事件update:userName

例三

更复杂的对象传递,比如绑定整个对象,需要使用计算属性的gettersetter

对象参数 - 颜色选择器

ColorPicker.vue

<template><input type="color" :value="color" @input="$emit('update:color', $event.target.value)"><inputtype="range":value="opacity"@input="$emit('update:opacity', $event.target.value)"min="0"max="1"step="0.1">
</template><script setup>
defineProps({color: String,opacity: Number
});
defineEmits(['update:color', 'update:opacity']);
</script><!-- 父组件使用 -->
<!-- <ColorPicker v-model:color="style.color" v-model:opacity="style.opacity"
/> -->

关键点总结:

  1. 使用 v-model:参数名 语法实现多个绑定
  2. 子组件通过 defineProps 接收参数
  3. 通过 update:参数名 事件触发更新
  4. 参数名会自动转换为kebab-case(如userName → user-name
  5. 支持任意数量的v-model绑定
  6. 可以组合使用普通propsv-model参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv11小白的进击之路(九)创新YOLO11损失函数之NWD损失函数源码解读

之前的博客也有对YOLO11的损失函数进行过源码分析&#xff0c;可以参考&#xff1a;YOLOv11小白的进击之路&#xff08;六&#xff09;创新YOLO的iou及损失函数时的源码分析_yolov11的损失函数是什么-CSDN博客最近在做小目标检测的时候注意到了NWD损失函数&#xff0c;这里对其…

VLN 论文精读(四)Dynamic Path Navigation for Motion Agents with LLM Reasoning

这篇笔记用来描述2025年发表在arxiv上的一篇有关VLN领域的论文&#xff0c;由港科大和达特茅斯大学联合发布&#xff0c;其核心思想有以下几点&#xff1a; 将3D环境转化为2D平面&#xff1b;2D平面中障碍物分布、机器人起点与终点信息用稀疏矩阵形式进行描述&#xff1b;与LL…

vue3之写一个aichat ----vite.config.js

vite.config.js的CSS配置 postcss-pxtorem 开发响应式网页的时候需要用到postcss-pxtorem amfe-flexible amfe-flexible是由阿里团队开发的一个库&#xff0c;它可以根据设备的屏幕宽度去动态调整HTML根元素()的字体大小&#xff0c;这意味着无论用户使用什么尺寸的设备访问你…

宝石PDF,全新 PC 版本,全部免费

宝石PDF已经运行 3 年时间&#xff0c;有客户端&#xff0c;小程序&#xff0c;一直未上 PC 版本&#xff0c;随着客户端功能升级的不及时&#xff0c;很多用户建议上 PC 版本。但是飞哥一直忙&#xff0c;这不终于给上了。 同时系统的名称也从 “PDF云转换”改为“宝石PDF”&…

.NET8使用EF Core连接SQLite

使用框架 .NET8 在nuget中&#xff0c;需要安装包&#xff1a; SQLitePCLRaw.bundle_e_sqlite3&#xff0c;版本 2.1.10 Microsoft.EntityFrameworkCore.Sqlite.Core&#xff0c;版本 9.0.0 using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; using Microso…

HTML课后实践

实验一 【实验原理】 在搜索引擎的文本分析中&#xff0c;标题的信息权重要比正文的大&#xff0c;所以标题的样式非常重要。本实验通过把标题标记和常规文本进行对比输出&#xff0c;掌握标题标签的用法。在网页中&#xff0c;有时需要为文字设置粗体、斜体或下划线效果&#…

【紫光同创FPGA开发常用工具】FPGACPLD的下载与固化

文档内容适配技术问题说明&#xff08;非正文&#xff09;&#xff1a; 1、FPGA&CPLD如何下载位流文件&#xff1b; 2、FPGA外部flash如何固化位流文件&#xff1b; 3、PDS软件烧录界面如何新增用户flash&#xff1b; 4、CPLD内部flash如何固化位流文件&#xff1b; F…

前端传参+后端接参对照

✅ Java 后端参数接收注解 & 前端传参格式对照 后端注解前端 Content-Type前端传参方式说明RequestParamapplication/x-www-form-urlencodedURL参数 / form表单提交 / Postman form-data常用于 keyvalue 形式的参数&#xff1b;适合少量简单参数RequestParamURL拼接/api/t…

计算机网络的框架结构

计算机网络课程知识体系框架 一、计算机网络基础概念 1.1 网络组成要素 端系统&#xff08;主机、服务器&#xff09;通信链路&#xff08;有线/无线介质&#xff09;交换设备&#xff08;路由器、交换机&#xff09;协议体系&#xff08;TCP/IP协议簇&#xff09; 1.2 网络…

塔能智慧物联节能方案:点亮城市,赋能工厂

在全球积极倡导节能减排、绿色发展的时代背景下&#xff0c;塔能&#xff08;江苏&#xff09;科技有限公司凭借其创新的智慧物联节能一体化解决方案&#xff0c;在城市照明和工厂节能领域取得了显著成果。该方案不仅为城市的夜晚带来了明亮且节能的照明&#xff0c;还为工厂的…

Laravel框架下通过DB获取数据并转为数组的方法

在Laravel框架中&#xff0c;获取数据库信息并将其转换为数组是一种常见的操作&#xff0c;特别是在处理数据导出、API响应等场景中。Laravel提供了简洁而强大的数据库抽象层&#xff0c;旨在简化这类操作。接下来&#xff0c;我们将探讨几种在Laravel中通过数据库抽象层&#…

pytorch小记(九):pytorch中创建指定形状的张量: torch.empty

pytorch小记&#xff08;九&#xff09;&#xff1a;pytorch中创建指定形状的张量: torch.empty 详细解释1. 基本功能2. 语法3. 示例代码示例 1&#xff1a;创建一个 5 的未初始化张量示例 2&#xff1a;创建一个 23 的未初始化张量示例 3&#xff1a;指定数据类型和设备 4. 注…

Linux cgroup cpuset

cpuset.c 是 Linux cgroup 的 cpuset 子系统的核心实现&#xff0c;这个文件的主要作用是&#xff1a; 实现 cgroup 的 cpuset 子系统管理进程的 CPU 和内存资源访问权限提供 CPU 和内存节点的独占功能支持层级化的资源管理提供用户空间接口来配置和查看资源限制 关键数据结构…

Tailwind CSS 学习笔记(一)

一、简介 Tailwind CSS是一个工具优先的CSS 框架,只需书写HTML 代码,无需书写CSS,即可快速构建美观的网站。 二、优点 1、简洁、规整,避免了随意取类名 Tailwind CSS 的工具类(Utility classes) 能够为你提供一套约束系统,避免让你的样式表中出现随意的取值。它让颜色、…

Python自动点击器开发教程 - 支持键盘连按和鼠标连点

Python自动点击器开发教程 - 支持键盘连按和鼠标连点 这里写目录标题 Python自动点击器开发教程 - 支持键盘连按和鼠标连点项目介绍开发环境安装依赖核心代码解析1. 键盘模拟实现2. 鼠标点击实现 开发要点使用说明注意事项优化建议打包发布项目源码开发心得参考资料成品工具 项…

Cursor插件市场打不开解决

问题现象&#xff1a; cursor搜索插件的时候提示错误&#xff0c;无法搜索安装插件 error while fetching extensions.failed to fetch 问题原因 cursor默认安装使用的并不是vs code的插件市场&#xff0c;国内网络有时候打不开 解决 修改插件市场地址并重启cursor 打开cur…

【DeepSeek】本地部署DeepSeek的完整教程(Ollama+Docker+Open WebUI)

本地部署DeepSeek的完整教程 文章目录 本地部署DeepSeek的完整教程写在前面技术需求详细步骤一. 安装Ollama软件二. 安装DeepSeek-R1模型三. 安装Docker软件四. 配置Web UI界面问题解决1. 打开`docker desktop`时,一直显示`Docker Engine stopped`2. 用`Docker`拉取`Open WebU…

Java创造型模式之原型模式详解

设计模式是面向对象设计中的一种标准方法&#xff0c;用于解决常见的设计问题。原型设计模式&#xff08;Prototype Pattern&#xff09;是23种经典设计模式之一&#xff0c;属于创建型模式&#xff0c;它允许通过复制现有对象来创建新对象&#xff0c;而不是通过构造函数或工厂…

python-leetcode 54.全排列

题目&#xff1a; 给定不含重复数字的数组nums,返回其所有可能的全排列&#xff0c;可以按任意顺序返回答案 回溯法 一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解被确认不是一个解&#xff08;或者至少不是最后一个解&#xff09;&#xff0c;回溯算法会通…

python局部变量和全局变量

文章目录 1.局部变量和全局变量2.局部变量2.1 局部变量的作用2.2 局部变量的生命周期 3. 全局变量3.1 函数不能直接修改全局变量的引用3.2 在函数内部修改全局变量的值3.3 全局变量定义的位置3.4 全局变量命名的建议 1.局部变量和全局变量 &#xff08;1&#xff09;局部变量 …