关于el-dialog作为子窗口,修改/添加后刷新父窗口数据表格,然后立即隐藏子窗口,造成父窗口表格刷新数据不稳定问题的解决

解决方法是:调用父窗口刷新数据函数后,子窗口不执行隐藏,父窗口刷新数据成功后再隐藏子窗口。回头看出的这个问题感觉自己很可笑,但是为啥子窗口执行完刷新父窗口后立即隐藏,父窗口也执行了刷新数据函数,可数据就是时不时可以刷新出来,是网络传输的问题,还是数据库更新有延迟,还是窗口隐藏导致调用父窗口刷新数据时间不够,还是异步同步的问题,等等原因就不得而知了,问题解决了就好,欢迎指导。

参考方法如下:重点看加粗部分

父窗口

<template>

<el-table :data="pageModelDataInstance.list" style="width: 100%">

    <el-table-column prop="funcName" label="名称" width="200" show-overflow-tooltip />

</el-table>

<DialogInstance v-model="dialogVisible" :dialogTitle="dialogTitle" v-if="dialogVisible" :dialogTableModel="curModel"

    @initFuctionmoudleList="loadDataFromServer" />

</template>

<script setup lang="ts">

//引入编辑窗体

import DialogInstance from '@/components/functionmoudlesforms/FunctionForm.vue'

//编辑窗体是否显示

const dialogVisible = ref(false);

//刷新数据

const loadDataFromServer = async () => {

  //封装的从服务器端加载数据函数

  await getOnePageFunctionMoudlesList(basesiteinfo, multySearchModel)

    .then((res) => {

//分页处理部分

………………

      //刷新数据完成后隐藏子窗口

      dialogVisible.value = false;

    }).catch(() => {

      console.info("出错啦");

    });

}

</script>

子窗口:

<template>

    <el-dialog :model-value="dialogVisible" width="30%" draggable @close="onFormClose">

        <el-form ref="ruleFormRef" :model="formModel" label-width="100px" style="max-width: 460px" :rules="rules">

            <el-form-item label="名称" prop="funcName">

                <el-input v-model="formModel.funcName" type="text" />

            </el-form-item>

        </el-form>

        <template #footer>

            <span class="dialog-footer">

                <el-button type="primary" @click="onFormClose">

                    <span class="iconfont">&#xe658;</span>取消

                </el-button>

                <el-button type="danger" @click="onConfirmcSaveToServer(ruleFormRef)">

                    <span class="iconfont">&#xe645;</span>保存

                </el-button>

            </span>

        </template>

    </el-dialog>

</template>

<script lang="ts" setup>

//用户主动关闭子窗口

const onFormClose = () => {

    //关闭窗口

    emits("update:modelValue", false);

}

//保存至服务器

function onConfirmcSaveToServer(formEl: FormInstance | undefined) {

    if (!formEl) return

    formEl.validate((valid) => {

        if (valid) {

// saveToServer为封装好的保存函数,保存成功返回true

            saveToServer().then((res) => {

                if (res) {

                    //重置表单,否则会出现重复添加的问题

                    ruleFormRef.value?.resetFields();

                    //只刷新父窗口,不关闭子窗口

                    emits("initFuctionmoudleList");

                }

            });

        } else {

            return false

        }

    })

}

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值