当前位置: 首页 > article >正文

【VUE点击父组件按钮,跳转到子组件】

要实现在Vue中,父组件通过点击按钮进入子组件的 <el-dialog> 弹窗,并在弹窗中嵌套 <el-table> 表格,可以按照以下步骤进行编写代码:

  1. 在父组件中,定义一个数据属性用于控制子组件弹窗的显示与隐藏。
data() {
  return {
    showDialog: false, // 控制弹窗显示与隐藏的标志位
  };
},
  1. 在父组件的模板中,使用 <el-button> 按钮,并通过点击事件触发方法来打开弹窗。
<template>
  <div>
    <el-button type="primary" @click="showDialog = true">打开弹窗</el-button>
    <child-component :show-dialog="showDialog" @close-dialog="showDialog = false"></child-component>
  </div>
</template>
  1. 创建子组件 ChildComponent,并在子组件中定义弹窗和表格的内容。
<template>
  <div>
    <el-dialog :visible.sync="showDialog" @close="closeDialog" title="弹窗标题" width="80%">
      <el-table :data="tableData">
        <el-table-column prop="name" label="姓名"></el-table-column>
        <el-table-column prop="age" label="年龄"></el-table-column>
        <!-- 其他表格列 -->
      </el-table>
    </el-dialog>
  </div>
</template>

<script>
export default {
  props: {
    showDialog: {
      type: Boolean,
      required: true,
    },
  },
  data() {
    return {
      tableData: [
        // 表格数据
        { name: '张三', age: 20 },
        { name: '李四', age: 25 }
      ],
    };
  },
  methods: {
    closeDialog() {
      this.$emit('close-dialog');
    },
  },
};
</script>
  1. 使用子组件时,通过 props 属性将父组件的 showDialog 数据传递给子组件,并在子组件中根据该属性值控制弹窗的显示与隐藏。通过自定义事件 close-dialog 将子组件中关闭弹窗的方法传递给父组件,在父组件中接收该事件并更新 showDialog 数据。

这样,当在父组件中点击按钮时,子组件的弹窗会显示出来,并在弹窗中展示表格内容。点击子组件中的关闭按钮或其他关闭逻辑时,弹窗会关闭。同时,确保 tableData 变量已经定义并包含正确的表格数据。

可能出现的问题:

如果你点击按钮后看到弹窗显示了,但需要再次点击一下才能看到弹窗内容变亮,这可能是由于 <el-dialog> 组件的 visible.sync 属性的问题。

<el-dialog> 组件中,使用 .sync 修饰符可以实现双向绑定,但在某些情况下,可能会导致绑定失效,即更新 visible 属性时无法立即反映在弹窗上。

解决方法:

解决这个问题的方法是,使用一个额外的变量来控制弹窗的显示与隐藏,并在需要更新弹窗状态时手动同步这个变量。

以下是修改后的代码示例:

<template>
  <div>
    <el-button type="primary" @click="openDialog">打开弹窗</el-button>
    <child-component :show-dialog="dialogVisible" @close-dialog="closeDialog"></child-component>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dialogVisible: false, // 控制弹窗显示与隐藏的标志位
    };
  },
  methods: {
    openDialog() {
      this.dialogVisible = true;
    },
    closeDialog() {
      this.dialogVisible = false;
    },
  },
};
</script>

子组件内容保持不变:

通过使用额外的变量 dialogVisible 来控制弹窗的显示与隐藏,并在父组件中手动更新它,就可以避免需要点击两次才能使弹窗内容变亮的问题。


http://www.kler.cn/news/365729.html

相关文章:

  • 将获取的数据存储到Excel文件中
  • 纯血鸿蒙的未来前景
  • LVGL第二篇-组件创建与显示(以slider为例)
  • Spring Cloud:构建高可用分布式系统的利器
  • git入门操作(2)
  • 文件上传漏洞及安全
  • Codeforces Round 979 (Div. 2) C. A TRUE Battle
  • R语言中的Lasso回归:全面指南与实战案例
  • electron展示下载进度条
  • HarmonyOS(56) 获取自定义组件的唯一ID:getUniqueId()方法
  • 企业如何配合好等级保护测评工作?
  • 聚簇索引与非聚簇索引
  • 【Unity】Unity中调用手机的震动功能 包括安卓和IOS
  • 鸿蒙开发融云demo发送文本消息
  • fpga系列 HDL: 竞争和冒险 01
  • JMeter与大模型融合应用之JMeter创建二级菜单的简单大模型交互
  • 企业自建邮件系统选U-Mail ,功能强大、安全稳定
  • jenkins国内插件源
  • 深入解析 MySQL 数据库:更新和删除
  • 【Java小白图文教程】-05-数组和排序算法详解
  • docker 可用镜像服务地址(2024.10.25亲测可用)
  • 【ChatGPT插件漏洞三连发之二】零点击Github仓库接管
  • Visual 使用技巧合辑
  • 栅格的着色器实现【最完善】
  • 使用AutoDL训练YOLO等计算机视觉网络模型(AutoDL+Xftp+VS Code),附详细操作步骤
  • 打开Windows来体验AIGC或者ChatGPT