【前端vue2 + element ui】Dialog 对话框:.vue组件跳转


请添加图片描述

🌈你好呀!我是 是Yu欸
🌌 2024每日百字篆刻时光,感谢你的陪伴与支持 ~
🚀 欢迎一起踏上探险之旅,挖掘无限可能,共同成长!

写在最前面

背景:vue2 + element ui

子组件里面写Dialog 对话框,父组件直接调用

如果在子组件关闭了Dialog 对话框,那么:
①在子组件可见状态是false
②在父组件可见状态是true
会导致按<跳转按钮>无法跳出弹窗

所以需要:
①Dialog 对话框父组件、子组件双向绑定可见状态,才能控制可见状态的false
②Vue组件中的一个[watch]属性,用于监视visible属性的变化

一、父组件调用

1、<template>

1.1 跳转位置

  <el-table-column prop="stnm" label="测站名称" sortable="custom">
    <template slot-scope="scope">
      <el-button type="text" @click="handleClickstnm(scope.row)">{{ scope.row.stnm }}</el-button>
    </template>
  </el-table-column>

1.2 弹窗调用

写到最后面

<!-- 跳转Dialog -->
  <FlowMeasurement ref="childRef" :visible="createvisible" :type="type" :stnmdata="stnmdata"
   @close="CloseMeasure"  />

  </div>
</template>

2、<script>

2.1 import

引用子组件

import FlowMeasurement from './FlowMeasurement.vue';

2.2 export

声明组件

export default {
  components: {
    FlowMeasurement
  },

data中声明可见状态

data() {
    return {
      type: '',
      createvisible: false,
      stnmdata: {},

2.3 methods

  methods: {
    // 关闭弹窗
    CloseMeasure() {
      this.createvisible = false
    },
    // 点开弹窗
    handleClickstnm(stnm) {
      console.log(stnm)
      this.createvisible = true
      this.type = 'view'
      this.stnmdata = stnm
    },
    //或者
        handleClickstnm() {
      console.log(this.createvisible)
      this.createvisible = true
    },

二、子组件调用

1、<template>

开局弹窗声明

    <el-dialog title="测站信息新增" :visible.sync="createvisible" width="80%" @close="CloseMeasure" demo-form>

2、<script>

2.1 export

新声明name,然后传值。

需要确认一下,props传值是visible(后面watch函数监听的变量)

export default {
  name: 'FlowMeasurement',
  props: {
    visible: {
      type: Boolean,
      default: false
    },
    type: {
      type: String,
      default: ''
    }
  },

2.2 watch和methods并列

这段代码是Vue组件中的一个[watch]属性,用于监视visible属性的变化。每当visible属性的值发生变化时,这个监视器(watcher)就会被触发,并执行相应的函数。

具体来说,这个函数做的事情是:

  • 监视visible属性的值。
  • visible的值发生变化时(无论是从true变为false,还是从false变为true),将这个新的值赋给[createvisible]属性。

这样做的目的通常是为了同步两个属性的值,使得[createvisible]的值总是跟visible保持一致。这在Vue组件中是一种常见的模式,用于在组件内部响应外部传入的props变化。

    watch: {
    visible(val) {
      this.createvisible = val;
    }
  },

2.3 methods

this.$emit('close')很重要,否则会关闭后再次点击打不开了。
因为关闭后显示状态为true,但是没有显示
显示状态和bool冲突

methods: {
    // 右上角关闭按钮
    CloseMeasure() {
      this.createvisible = false
      this.$emit('close')
    },

CloseSuccess


欢迎大家添加好友交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是Yu欸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值