Dialog与Table组件解耦方案

Table

<template>
  <div class="table-wrap">
    <memoDialog ref="memoDialogRef" />
  </div>
</template>

<script setup>
const memoDialogRef = ref();

async function obsolete(row) {
  const action = "canceled";
  const memo = await memoDialogRef.value.openDialog({ action });
  handleExecute(row, action, memo);
}
</script>

Dialog

<template>
  <el-dialog title="标题" v-model="dialogVisible" :before-close="closeDialog">
    <template #footer>
      <div class="dialog-footer">
        <el-button @click="onReset">取消</el-button>
        <el-button type="primary" @click="submit">确定</el-button>
      </div>
    </template>
  </el-dialog>
</template>

<script setup>
const dialogVisible = ref(false);

function onInit() {
  // 初始化
}
function onReset() {
  // 重置
}
function closeDialog() {
  dialogVisible.value = false;
  onReset();
}
var openDialogPromise;
async function openDialog(...args) {
  dialogVisible.value = true;
  onInit(...args);
  return new Promise((resolve, reject) => {
    openDialogPromise = { resolve, reject };
  });
}
async function submit() {
  // ...
  openDialogPromise.resolve(/* data */);
}

defineExpose({
  openDialog,
});
</script>

  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值