Vue2 父子组件数据传递与调用:从 ref 到 $emit

news2025/4/6 3:37:29

提示:https://github.com/jeecgboot/jeecgboot-vue2

文章目录

  • 案例
  • 父组件向子组件传递数据的方式
  • 父组件调用子组件方法的方式
  • 子组件向父组件传递数据的方式
  • 流程示意图


案例

提示:以下是本篇文章正文内容,下面案例可供参考

以下是 整合后的关键代码示例,展示父子组件间的数据传递与方法调用:

父组件 Parent.vue

<template>
  <!-- 1. 父组件通过 ref 引用子组件 -->
  <sysMessage-modal ref="modalForm" @ok="modalFormOk"></sysMessage-modal>
</template>

<script>
export default {
  components: {
    SysMessageModal
  },
  // 方法定义
  methods: {
    // 3. 父组件调用子组件方法并传递数据
    handleEdit(record) {
      this.$refs.modalForm.edit(record); // 调用子组件的 edit 方法
    },
    // 4. 父组件监听子组件的 @ok 事件
    modalFormOk() {
      console.log('处理子组件回调(子向父传数据)');
      this.loadData(); // 刷新表格数据
    }
  }
}
</script>

子组件 SysMessageModal.vue

<template>
  <a-drawer @close="close">
    <!-- 表单内容 -->
  </a-drawer>
</template>

<script>
export default {
  methods: {
    // 2.通过方法参数接收父组件数据
    edit(record) {
      this.model = Object.assign({}, record); // 接收父组件数据
      this.visible = true;
      // 填充表单逻辑...
    },
    // 5. 子组件通过事件向父组件传递数据
    handleOk() {
      this.$emit('ok'); // 触发父组件监听的事件
    }
  }
}
</script>

父组件向子组件传递数据的方式

  1. 通过方法调用传递数据
    父组件通过 ref 获取子组件实例,直接调用子组件的方法并传递数据。
    • 在父组件的模板中,子组件通过 ref="modalForm" 注册引用。
    • 当父组件需要编辑数据时(如点击编辑按钮),会调用子组件的 edit 方法,并将当前行数据 record 作为参数传入:
 // 父组件触发编辑操作
   handleEdit(record) {
     this.$refs.modalForm.edit(record); // 将 record 传递给子组件
   }

 // 子组件的 `edit` 方法接收数据并更新表单:
   edit(record) {
     this.model = Object.assign({}, record); // 接收父组件传递的数据
     // 更新表单字段...
   }

父组件调用子组件方法的方式

  1. 通过 ref 直接调用子组件方法
    父组件通过 this.$refs.modalForm 获取子组件实例,直接调用其方法。
    • 当用户点击“新增”按钮时,父组件调用子组件的 add 方法打开表单:
  handleAdd() {
    this.$refs.modalForm.add(); // 调用子组件的 add 方法
  }

// 子组件的 `add` 方法负责初始化空表单并显示抽屉:
  add() {
    this.edit({}); // 初始化空数据
    this.visible = true; // 显示抽屉
  }

子组件向父组件传递数据的方式

  1. 通过事件触发传递
    子组件通过 $emit 触发事件通知父组件,并可以携带数据。
    • 子组件在提交成功后触发 ok 事件:
     this.$emit('ok'); // 触发父组件的 @ok 事件

//父组件监听此事件,并执行 `modalFormOk` 方法刷新数据:
     <sysMessage-modal @ok="modalFormOk"></sysMessage-modal>

     modalFormOk() {
       this.loadData(); // 父组件重新加载数据
     }

流程示意图

方向方式代码示例
父组件 → 子组件通过 ref 调用子组件方法并传参this.$refs.modalForm.edit(record);
父组件调用子组件方法通过 ref 引用直接调用this.$refs.modalForm.add();
子组件 → 父组件通过 $emit 触发事件this.$emit('ok');

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

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

相关文章

Linux C++编译及g++使用操作

编译的步骤 编译选项参数 编译生成库文件 静态库 动态库 运行可执行文件 静态库由于已经包含了链接的文件所以可以直接执行&#xff1b;动态库方式由于是运行时链接&#xff0c;所以需要指定链接的路径&#xff1b;

【Android】界面布局-线性布局LinearLayout-例子

线性布局&#xff08;LinearLayout&#xff09;是一种重要的界面布局中&#xff0c;也是经常使用到的一种界面布局 • 在线性布局中&#xff0c;所有的子元素都按照垂直或水平的顺序在界面上排列 ➢如果垂直排列&#xff0c;则每行仅包含一个界面元素 ➢如果水平排列&…

windows技术基础知识

NT架构 NT 就是new techonology 的英文单词缩写&#xff0c;是微软1993年推出操作系统的重大升级&#xff0c;如内存管理&#xff0c;安全机制&#xff0c;多任务&#xff0c;多线程支持。在此之前操作系统都是基于MS-DOS上面的图形化界面&#xff0c;只有有限的内存管理和多任…

在 Windows 环境下使用 VSCode 和 TinyGo 开发 ESP8266(NodeMcu) or STM32

支持的型号 https://tinygo.org/docs/reference/microcontrollers/ 1. 安装Go 2. 安装TinyGo&#xff0c;并添加环境变量 https://github.com/tinygo-org/tinygo/releases 3. VSCode配置&#xff0c;安装插件&#xff0c;选择设备 package mainimport ("machine"&q…

计算机视觉算法实战——基于YOLOv8的汽车试验场积水路段识别系统

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​​​​​​​ ​​ 引言&#xff1a;汽车试验场智能化管理的迫切需求 在现代汽车研发流程中&#xff0c;试验场作为验证车辆性…

One API:LLM API 管理 分发系统,github 24.2K Star!

随着人工智能领域的不断发展&#xff0c;国内外各大厂商纷纷推出了自己的 AI 大模型。面对 DeepSeek、OpenAI、Claude、腾讯元宝等众多平台的 API 接口差异&#xff0c;开发者常常需要花费大量时间调整代码、处理密钥管理与流量调控。One API 正是在这种背景下诞生&#xff0c;…

Android Settings 有线网设置界面优化

Android Settings 有线网设置界面优化 文章目录 Android Settings 有线网设置界面优化一、前言二、简单修改1、修改的EthernetSettings代码&#xff1a;2、有线网ip获取代码&#xff1a;3、AndroidManifest.xml定义有线网的Activity4、修改后界面&#xff1a; 三、其他1、有线网…

正则入门到精通

​ 一、正则表达式入门​ 正则表达式本质上是一串字符序列&#xff0c;用于定义一个文本模式。通过这个模式&#xff0c;我们可以指定要匹配的文本特征。例如&#xff0c;如果你想匹配一个以 “abc” 开头的字符串&#xff0c;正则表达式可以写作 “^abc”&#xff0c;其中 …

微信小程序基于Canvas实现头像图片裁剪(上)

序言 嘿&#xff0c;打工人混迹职场这么久&#xff0c;图片处理肯定都没少碰。不过咱说实话&#xff0c;大部分时候都是直接 “抄近道”&#xff0c;用现成的三方组件&#x1f60f;。就像我&#xff0c;主打一个会用工具&#xff0c;毕竟善用工具可是咱人类的 “超能力”&…

基于VMware的Cent OS Stream 8安装与配置及远程连接软件的介绍

1.VMware Workstation 简介&#xff1a; VMware Workstation&#xff08;中文名“威睿工作站”&#xff09;是一款功能强大的桌面虚拟计算机软件&#xff0c;提供用户可在单一的桌面上同时运行不同的操作系统&#xff0c;和进行开发、测试 、部署新的应用程序的最佳解决方案。…

Ubuntu环境基于Ollama部署DeepSeek+Open-Webui实现本地部署大模型-无脑部署

Ollama介绍 Ollama是一款简单好用的模型部署工具,不仅可以部署DeepSeek,市面上开源模型大部分都可以一键部署,这里以DeepSeek为例 官网 DeepSeek 版本硬件要求 安装Ollama 环境 sudo apt update sudo apt install curl sudo apt install lsof1.命令一键安装 在官网点击…

goto在Java中的用法

说明&#xff1a;goto 在一些编程语言&#xff08;如C语言&#xff09;中&#xff0c;是用来表示跳转的&#xff0c;即代码执行到此处跳转到对应位置继续执行。 举例 举个例子&#xff0c;如下&#xff0c;是一个双层嵌套循环。现在我需要代码在内层循环符合某条件时跳出双层…

Vue3+Vite+TypeScript+Element Plus开发-03.主页设计与router配置

系列文档目录 Vue3ViteTypeScript安装 Element Plus安装与配置 主页设计与router配置 静态菜单设计 Pinia引入 文章目录 目录 系列文档目录 文章目录 前言 一、主页设计 二、配置代替别名 三、配置router 四、运行效果 五、参考文献 前言 本文将重点介绍如何使用…

无限滚动(Infinite Scroll)页面谷歌不收录!必须改回分页吗?

近三年&#xff0c;全球超过58%的网站采用无限滚动设计&#xff08;数据来源&#xff1a;PageTraffic 2023&#xff09; 谷歌官方数据显示&#xff0c;动态加载内容的索引失败率高达73%&#xff08;Google Webmaster Report 2022&#xff09;&#xff0c;而采用纯无限滚动的页…

Git相关笔记1 - 本地文件上传远程仓库

Git相关笔记 目录 Git相关笔记Git上传相关文件第一步创建一个仓库&#xff1a;第二步本地创建空文件夹&#xff1a;第三步开始在gitbush上传文件&#xff1a;解决外网网络连接的问题&#xff1a;中文文件的编码问题&#xff1a;参考资料 Git上传相关文件 第一步创建一个仓库&a…

如何计算财富自由所需要的价格?

写在前面&#xff1a;​【财富自由计算器】已上线&#xff0c;快算算财富自由要多少​ 多少钱&#xff0c;才能实现你的财富梦想&#xff1f; 需要多少&#xff0c;才能实现财务安全、财务独立&#xff0c;甚至财务自由&#xff1f; 看到结尾&#xff0c;你会很清楚地看到&…

thinkphp每条一级栏目中可自定义添加多条二级栏目,每条二级栏目包含多个字段信息

小程序客户端需要展示团购详情这种结构的内容,后台会新增多条套餐,每条套餐可以新增多条菜品信息,每条菜品信息包含菜品名称,价格,份数等字段信息,类似于购物网的商品多规格属性,数据表中以json类型存储,手写了一个后台添加和编辑的demo 添加页面 编辑页面(json数据…

深入解析ARM与RISC-V架构的Bring-up核心流程

深入解析ARM与RISC-V架构的Bring-up核心流程 作者&#xff1a;嵌入式架构探索者 | 2023年10月 引言 在嵌入式开发中&#xff0c;处理器的Bring-up&#xff08;启动初始化&#xff09;是系统运行的第一道门槛。ARM和RISC-V作为两大主流架构&#xff0c;其Bring-up流程既有共性…

Lettuce与Springboot集成使用

一、Lettuce核心优势与Spring Boot集成背景 Lettuce特性 基于Netty的非阻塞I/O模型&#xff0c;支持同步/异步/响应式编程线程安全&#xff1a;共享单连接实现多线程并发操作&#xff0c;性能衰减低原生支持Redis集群、哨兵、主从架构&#xff0c;自动重连机制保障高可用Spring…

《系统分析师-基础篇-1-6章总结》

第1章 绪论 系统分析师角色 职责&#xff1a;需求分析、系统设计、项目管理、技术协调。 能力要求&#xff1a;技术深度&#xff08;架构设计、开发方法&#xff09; 业务理解&#xff08;企业流程、行业知识&#xff09; 沟通能力。 系统开发生命周期 传统模型&#xf…