【vue2父组件调用子组件方法之slot的使用】

vue中父组件直接调用子组件方法(通过ref) 是子组件中定义的一个方法,你需要根据实际情况替换成子组件中真正的方法名。此外,需要确保子组件已经被完全渲染和挂载,才能正确地访问到子组件的实例。通过以上方式,父组件就可以直接调用子组件的方法了。请注意,父组件调用子组件方法的前提是子组件已经被渲染到页面上。在 Vue 3 中,父组件可以直接调用子组件的方法,可以通过。属性来引用子组件的实例,然后通过该实例调用子组件的方法。访问子组件,并直接调用子组件的方法。首先,在子组件中,需要将要调用的方法使用。首先,在父组件的模板中,给子组件添加一个。 阅读详情

父组件调用子组件方法之slot的使用

具体功能需求:

一个页面,点击按钮,打开一个弹窗。弹窗有自定义表单和公共表单,提交的时候要获取两个表单的数据以及复显表单数据
为什么使用插槽了,因为我需要在弹窗中复用公共表单,而自定义表单是不固定的,所以需要动态加载。

1、 实现方式 直接通过插槽的 this.$slots 来获取子组件的方法

注意:使用的ui组件库是iview

页面 index.vue

<template >
  <div>
    <Button type="primary" @click="handleOpen">打开弹窗 </Button>
    <FormModal :modalVisibleProp.sync="modalVisibleProp">
      <template slot="customForm">
        <FormCustom />
      </template>
    </FormModal>
  </div>
</template>

<script>
import FormModal from './FormModal.vue';
import FormCustom from './FormCustom.vue';
export default {
  name: '',
  components: {
    FormModal,
    FormCustom
  },
  data() {
    return {
      modalVisibleProp: false
    };
  },
  methods: {
    // 新增
    handleOpen() {
      this.modalVisibleProp = true;
    }
  }
};
</script>

弹窗组件 FormModal.vue

<template>
  <Modal v-model="visible" title="测试" width="40" @on-visible-change="onVisibleChange" @on-cancel="handleReset">
    <div>
      <slot name="customForm"></slot>
      <FormCommon ref="commonForm" />
    </div>
    <div class="drawer-footer">
      <Button @click="handleReset">取消</Button>&nbsp;
      <Button type="primary" :loading="modalLoading" @click="ok">提交</Button>
    </div>
  </Modal>
</template>
<script>
import FormCommon from './FormCommon.vue';
export default {
  name: 'FormModal',
  components: {
    FormCommon
  },
  props: {
    modalVisibleProp: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {};
  },
  computed: {
    visible: {
      get: function () {
        return this.modalVisibleProp;
      },
      set: function () {}
    }
  },
  methods: {
    async ok() {
      try {
        let customFormValue = {};
        const customFormInstance = this.$slots.customForm[0].componentInstance;
        if (customFormInstance && typeof customFormInstance.getData === 'function') {
          customFormValue = await customFormInstance.getData(); // 自定义表单获取数据
        }
        const commonFormValue = await this.$refs.commonForm.getData(); // 公共表单获取数据
      } catch (error) {
        console.log(error);
      }
    },
    handleReset() {
      this.$emit('update:modalVisibleProp', false);
    },
    onVisibleChange(visible) {
      if (!visible) {
        this.handleReset();
      }
    }
  }
};
</script>

自定义表单 FormCustom.vue

<template>
  <Form ref="form" :model="formItem" :rules="formItemRules" :label-width="135">
    <FormItem label="custom" prop="a">
      <Input v-model="formItem.a" placeholder="请输入内容"> </Input>
    </FormItem>
  </Form>
</template>
<script>
export default {
  name: '',
  data() {
    return {
      formItem: {
        a: 'customData'
      },
      formItemRules: {
        a: [{ required: true, message: '不能为空' }]
      }
    };
  },
  methods: {
    async getData() {
      const valid = await this.$refs.form.validate();
      if (valid) {
        return this.formItem;
      } else {
        return false;
      }
    },
    setData(data) {
      this.formItem = data;
    }
  }
};
</script>

公共表单 FormCommon.vue

<template>
  <Form ref="form" :model="formItem" :rules="formItemRules" :label-width="135">
    <FormItem label="common" prop="b">
      <Input v-model="formItem.b" placeholder="请输入内容"> </Input>
    </FormItem>
  </Form>
</template>
<script>
export default {
  name: '',
  data() {
    return {
      formItem: {
        b: 'commonData'
      },
      formItemRules: {
        b: [{ required: true, message: '不能为空' }]
      }
    };
  },
  methods: {
    async getData() {
      const valid = await this.$refs.form.validate();
      if (valid) {
        return this.formItem;
      } else {
        return false;
      }
    },
    setData(data) {
      this.formItem = data;
    }
  }
};
</script>

示例:
在这里插入图片描述

slot具名插槽 VUE子组件自定义事件在父组件显示 slot具名插槽 通过 slot 的 name 属性可以指定插入多个内容。 VUE子组件自定义事件在父组件显示 <template> <div> <h3>父组件</h3> 输入得显示:{{value}} <child v-on:huoQuNums="aaa"> <span slot="hea... 阅读详情

相关推荐

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

1.在子组件定义好功能: 2. 在父组件调用:

全易 1806

Vue2——父子组件间的调用

使用子组件标签上加@【子组件的this.$emit中第一个参数名】。

敲厉害的燕宝的博客 4389

Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用

Vue2中子组件调用父组件的方法,父组件调用子组件的方法,父子组件互相传值和方法调用

共同学习,共同成长 7459

vue2中,slot插槽的用法

插槽: 组件的某一部分空余出来, 需要使用组件的人存放内容

m0_66051368的博客 2211

别再对着数据手册画图了!用HFSS 2023 R2快速复现ESP-01的PCB天线(附模型文件)

本文详细介绍了使用HFSS 2023 R2逆向复现ESP-01 PCB天线的五个关键步骤,包括逆向工程准备、高效建模技巧、材料与边界设置、激励与求解配置以及结果分析与设计验证。通过参数化建模和智能边界检测,大幅提升仿真效率,适用于WIFI和蓝牙设备的射频设计优化。

weixin_30832143的博客 69

【校招】SHL 的 General Ability (GA, 通用能力测试)

SHL 的 General Ability (GA, 通用能力测试) 文章目录SHL 的 General Ability (GA, 通用能力测试)1、归纳推理题1.1 圈圈线条推理1.2 图形颜色位置推理1.3 箭头指向推理2. 数字推理题攻略3. 语言推理题 1、归纳推理题   归纳推理题我把它总结为三种类型:圈圈线条推理;图形颜色位置推理;箭头指向推理。 1.1 圈圈线条推理   你别看这个题目看起来很复杂,其实很简单,而且这个题型的题目背后原理都一样!我把我的 tips 偷偷分享给你们嘿嘿~先从 A

Sunnyside_ 2万+

vue2项目升级到vue3

vue2项目升级到vue3

fly_vip的博客 4098

从零构建:用Arduino和MCP2515模块搭建你的第一个CAN Bus网络

本文详细介绍了如何使用Arduino和MCP2515模块从零搭建CAN Bus网络,实现温湿度数据的传输与显示。涵盖硬件连接、软件配置、发送端与接收端代码实现,以及系统调试和进阶应用,帮助初学者快速掌握CAN总线通信技术。

d6e7f8的博客 822

vue中 slot 的使用总结

vue中slot的使用总结 slot是Vue中的插槽,首先它是使用在 子组件 中的 slot一般都是子组件定义了主体部分,父组件引入,然后父组件根据需求不同需要向里面添加不同的内容 1 . 普通 slot 插槽 父组件 ( 记得将子组件引入,并且将组件在components注册后才能使用 ) <template> <!-- 父组件 --> <div> <slotTest> </slotTest> </div>

qq_40893035的博客 7243

在 SAP HANA XS Advanced 中用 InA 打通 Web 化分析数据访问:架构原理、部署步骤与实战指南

本文介绍了如何在SAP HANA环境中通过InA协议为XS Advanced应用和分析工具提供实时数据访问。主要内容包括:InA协议的作用是将HANA计算视图等模型通过HTTP(S)暴露为实时数据源;SAP HANA Analytics Adapter(xsahaa)是关键组件,负责协议转换和连接管理;部署包含本地和云端两种形式,均需建立XSA空间与租户数据库的映射;实施前需准备HDI容器、适配器构建和网络验证;安全方面通过XSA用户角色和HDI授权双重控制;文章还提供了与SAP Analytics Clo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 255

大模型系列——一文看懂“提示词” vs “提示词工程” vs “上下文工程”

本文区分了AI领域的三个关键概念:提示词(Prompt)、提示词工程(Prompt Engineering)和上下文工程(Context Engineering)。提示词是直接输入给AI模型的指令文本;提示词工程则是系统化设计、测试和优化提示词的过程;而上下文工程是为AI构建动态上下文,提供恰当信息和工具的科学与艺术。文章通过翻译案例展示了提示词工程的迭代过程,并说明上下文工程在AI Agent中的核心作用——动态收集和组织必要信息。最后强调普通人只需掌握提示词编写,开发AI应用才需深入提示词工程,构建智能

2401_84052244的博客 739

Vue中slot与slot-scope的理解及使用

以前使用过vue,但是从来没有用过插槽slot,最近突然看到slot,发现有点不会用,因此决定系统的学习一下插槽slot。 但是在查看了vue文档后,感觉说的太笼统,让人难以理解,因此在网上查了很多资料,终于感觉自己对插槽slot有了一定的了解,决定记录下来,希望能帮到和我一样对插槽slot不懂的朋友。 对于官网文档中说的我就在此不复述了,感觉如果看懂的了的,也就不需要阅读这篇文章了。 ...

fang562878311的博客 1万+

【2026年华为暑期实习(AI)-6月3日-第一题- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文探讨了深度学习与计算机科学中的多个关键概念和技术,包括CUDA双缓冲技术、神经网络训练问题、优化算法、概率模型、Transformer架构特性、量化技术、损失函数选择等。通过20道选择题和多项选择题,涵盖了梯度消失/爆炸、神经元死亡、牛顿迭代法、朴素贝叶斯分类、Adam优化器、KV Cache压缩等核心知识点。特别关注了大模型训练中的计算效率、数值稳定性问题,以及实际应用场景如客服Agent的记忆机制优化。题目设计既考察基础理论(如概率分布、指数分布特性),又结合前沿技术(如MoE架构、注意

m0_73659489的博客 76

Vue子组件向父组件传值的几种方式

一. 使用slot插槽 1.子组件: <template> <div> <slot name="icon" :text="text"></slot> </div> </template> <script> export default{ data(){ return {...

我唤来了星繁,似灭似绚烂 9616

【UG\NX二次开发】多个带ui的dll怎么整合到一个dll

NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。有大佬知道多个带ui的dll怎么整合到一个dll吗。

王牌飞行员_里海的博客 276

《FreeRTOS 入门与实战》第20章:移植到 RISC-V 平台

处理器上下文保存/恢复机制中断处理与任务切换的协同时钟源配置(通常使用 Machine Timer)平台特定的汇编代码实现// 典型RISC-V移植文件结构FreeRTOS/├── Source/portable/[编译器]/RISC-V/│ ├── port.c // 关键移植接口│ ├── portASM.s // 汇编级处理│ └── portmacro.h // 架构宏定义。

2301_79143213的博客 443

vue3 父组件与路由子组件相互调用

Framework.vue中通过路由出口,展示了Main.vue组件,但是现在需要在Main.vue组件中去调用Framework.vue组件中的方法,可以有以下几种做法。

pscool的博客 4627

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

vue:slot(插槽)详解:父组件的内容放到子组件指定的位置

目录 slot插槽 应用场景: 作用: 分类 一、单个slot(基本用法) 二、多个slot(具名插槽) 三、作用域插槽(子组件向父组件传值) slot插槽:父组件的内容放到子组件指定的位置 应用场景: 项目中有很多地方需要调用一个组件,比如弹窗,但是内容又不固定,有个可能弹出是表格,有的可能弹出是照片,这个决定于需要调用这个子组件的父组件,这种情况下就可以在自组建(这个弹窗中...

happy81997的博客 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Vue——v-slot父组件调用子组件内的值

首先声明子组件,设置3个slot插槽,分别为header,main和默认插槽 <template> <div> <!-- 这是子组件 --> <slot name="header" v-bind:user="user">{{ user.lastName }}</slot> <!-- header插槽默认显示 user.lastName,即firstName123--> <slot name="m

weixin_45432736的博客 3532

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

vue中的slot标签

(二十八)Slot分发内容 ①概述: 简单来说,假如父组件需要在子组件内放一些DOM,那么这些DOM是显示、不显示、在哪个地方显示、如何显示,就是slot分发负责的活。 ②默认情况下 父组件在子组件内套的内容,是不显示的。 例如代码: [html] view plain copy 在CODE上查看代码片 派生到我的代码片 12345 显示内容是一个button按钮,不包含span标签里面的内容; ③单个slot

qq_45550167的博客 3925

『VUE』29. 动态插槽slot同时使用父组件和子组件数据(详细图文注释)

『VUE』29. 动态插槽slot同时使用父组件和子组件数据(详细图文注释)

MZH 1217

vue.js插槽slot 父组件子组件数据传递

父组件 <template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform"> <div> <ul> <!-- 父组件的Child标签中,使用:itemValue绑定了数据,传递到子组件中使用--> <Child v-for="item in it...

xsjCoding的博客 6662

vue---slot插槽实现 子组件向父组件传值

1.slot插槽作用域:带参数的插槽(可进行子组件向父组件传值) 父组件中: 在组件标签内部加一个template标签 在template标签上加一个属性scope 值随意书写 子组件中: 在组件内部用slot进行传值,如果给slot加一个自定义属性,那么在组件标签的template的scope上面就可以进行接收到,接收到的为一个对象 父组件app.v...

weixin_34212762的博客 3036

vue如何使用slot

Vue 中使用 slot 的方式取决于你是使用 Vue 2 还是 Vue 3,因为这两个版本在插槽(Slot)的语法上有所不同。下面是两个版本的基本使用方法:在 Vue 2 中, 是用来实现组件内容分发的一个关键特性,它允许你在父组件中定义一块内容,然后在子组件中决定如何展示这块内容。Vue 2 提供了几种类型的 slots,包括默认插槽、具名插槽以及作用域插槽。以下是它们的基本使用方法:默认插槽是最基本的用法,当你在一个组件中没有明确指定插槽名称时,内容将会被分配到默认插槽。父组件使用: 子组件定义: 1

BradenHan的专栏 1346

vue插槽slot踩坑--父组件通信

当我们在封装vue组件时,难免会用到插槽slot来进行子组件的嵌套,那么,当slot插槽处的内容组件需要和父组件进行通信时,怎么办呢?场景代码如下: // parent.vue <template> <div> <slot></slot> </div> </template> <scr...

追风Programer的博客 1964

Vue 使用slot分发内容

前面的话 当需要让组件组合使用,混合父组件的内容与子组件的模板时,就会用到slot,这个过程叫作内容分发(transclusion)。props传递数据、events触发事件和slot内容分发就构成了Vue组件的3个API来源,再复杂的组件也是由这3部分组成的。 本文将详细介绍内容分发slot。 编译作用域 正式介绍slot前,需要明确编译的作用域在哪。比如父组件的有如下模板: <chil...

小柒的前端之旅 3861
上一篇: 前端javascript模块化有哪些
下一篇: CSP Content Security Policy(内容安全策略)
睡不着的可乐
博客等级 码龄8年 1272粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值