vue中父组件控制子组件的显示隐藏详解

 更新时间:2025年10月28日 09:56:30   作者:m0_63466615  
文章介绍了在Vue.js中实现父子组件之间通信的一种方法,通过在子组件内部定义一个`show`方法,并在父组件调用该方法时传入相应的参数来控制子组件的显示和隐藏,这种方法避免了使用props和emit,使子组件的显示逻辑更加独立和清晰

需求

父组件点击新增或者修改时,子组件对话框显示

子组件的标题和确认按钮,根据父组件单击按钮来改变

做法

在子组件内部做一个show方法(函数名随意),在子组件内部定义变量,父组件调用子组件的show方法,并传入对应的参数,子组件根据对应的参数,给自己组件内部的变量赋值

这样做,而不用props,和emit传值的方法,优点是子组件的显示隐藏都由子组件自己内部变量控制,

如果使用props传值,还要监听父组件传过来的值

子组件show方法

    /**
     * 对话框展示,被父组件调用
     * @param visible 对话框是否可见
     * @param title 对话框的标题
     * @param buttonText 对话框底部确认按钮的文本
     * @param type 父组件传过来的参数,用来判断是新增还是修改
     * @param projectName 项目名称,修改需要用到
     * @param parentTableData 父组件的表格数据,来做表单验证,判断是否重名
     */
    show(visible, title, buttonText, type, projectName, parentTableData) {
      this.visible = visible
      this.innerDialogData.title = title
      this.innerDialogData.buttonText = buttonText
      this.type = type
      this.formInDialog.projectName = projectName
      this.tableData = parentTableData
    },

父组件调用子组件的方法

<el-button type="primary" size="mini" @click="handleDialogShow('add')">新增</el-button>
<el-button type="warning" size="mini" @click="handleDialogShow('modify')">修改</el-button>    

   /**
     * 单击新增或修改,dialog出现
     * @param value 传过来的字符串,来判断点的是哪个
     */
    handleDialogShow(value) {
      let visible, title, buttonText, type, projectName, parentTableData = this.parentTableData
      if (value === 'add') {
        visible = true
        title = '新建'
        buttonText = '新增'
        type = 'add'
        projectName = ''
      } else {
        if (this.multipleSelection.length !== 1 || this.multipleSelection.length === 0) {
          this.$message.warning('请选择一个项目进行修改')
        } else {
          visible = true
          title = '修改'
          buttonText = '保存'
          type = 'modify'
          projectName = this.multipleSelection[0].name
        }
      }
      this.$refs.addProjectDialog.show(visible, title, buttonText, type, projectName, parentTableData)
    },

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Vue.js实现大转盘抽奖总结及实现思路

    Vue.js实现大转盘抽奖总结及实现思路

    这篇文章主要介绍了 Vue.js实现大转盘抽奖总结及实现思路,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Vue报错"Failed to resolve loader:less-loader"的解决方法

    Vue报错"Failed to resolve loader:less-loader"的解决方

    这篇文章主要给大家介绍了关于Vue报错"Failed to resolve loader:less-loader"的解决方法,文中通过图文介绍的非常详细,对同样遇到这样问题的朋友具有一定的需要的朋友可以参考下
    2023-02-02
  • 简单实现Vue的observer和watcher

    简单实现Vue的observer和watcher

    这篇文章主要教大家如何简单实现Vue的observer和watcher,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 傻瓜式vuex语法糖kiss-vuex整理

    傻瓜式vuex语法糖kiss-vuex整理

    kiss-vuex 是一个非常简单的语法糖类库,这篇文章主要介绍了傻瓜式vuex语法糖kiss-vuex整理,非常具有实用价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • vue中props值的传递详解

    vue中props值的传递详解

    这篇文章主要介绍了vue中props值的传递,在vue中父组件要正向的向子组件传递数据或者参数,子组件接收到后根据参数的不同来进行对应的渲染,这个正向的数据传递在vue组件中就是通过props来实现的,需要的朋友可以参考下
    2009-05-05
  • Vue3组件通信的方法大全

    Vue3组件通信的方法大全

    在Vue3中,组件通信仍然是一个非常重要的话题,因为在大多数应用程序中,不同的组件之间需要进行数据传递和交互,本文给大家介绍了Vue3组件通信的方法大全,需要的朋友可以参考下
    2025-09-09
  • Vue.js实战之利用vue-router实现跳转页面

    Vue.js实战之利用vue-router实现跳转页面

    对于单页应用,官方提供了vue-router进行路由跳转的处理,这篇文章主要给大家介绍了Vue.js实战之利用vue-router实现跳转页面的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • 详解Vue的sync修饰符

    详解Vue的sync修饰符

    .sync修饰符算是Vue的所有修饰符中较难理解的一个,本篇文章就带你走近.sync的世界,深入理解后会发现,其实也就那么回事。修饰符和指令息息相关,下面从指令 ->修饰符->.sync修饰符由浅入深地来讲解 .sync的含义及用法。
    2021-05-05
  • vue利用Moment插件格式化时间的实例代码

    vue利用Moment插件格式化时间的实例代码

    Moment.js 是一个 JavaScript 日期处理类库,用于解析、检验、操作、以及显示日期。这篇文章主要给大家介绍了关于vue利用Moment插件格式化时间的相关资料,需要的朋友可以参考下
    2021-05-05
  • Vue中的事件绑定问题

    Vue中的事件绑定问题

    这篇文章主要介绍了Vue中的事件绑定问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论