BasicModal 弹窗
对 antv 的 modal 组件进行封装,扩展拖拽,全屏,自适应高度等功能 代码路径 src/components/Modal
基本用法
由于弹窗内代码一般作为单文件组件存在,也推荐这样做,所以示例都为单文件组件形式 注意v-bind="$attrs"记得写,用于将弹窗组件的attribute传入BasicModal组件 ModalComponent1.vue
<template>
<BasicModal v-bind="$attrs" title="我是模态框标题" :helpMessage="['提示1', '提示2']">
内容区
</BasicModal>
</template>
<script setup>
import { BasicModal } from '/@/components/Modal';
</script>
页面引用弹窗 xxPage.vue
<template>
<PageWrapper>
<a-button @click="handleClick">打开</a-button>
<ModalDemo @register="register" />
</PageWrapper>
</template>
<script setup>
import ModalDemo from './ModalDemo.vue';
import { useModal } from '/@/components/Modal';
const [register, { openModal }] = useModal();
const handleClick = () => {
openModal();
};
</script>
参数传递
外部引用页面可以通过openModal进行参数传递 xxPage.vue
<template>
<PageWrapper>
<a-button @click="handleClick">打开</a-button>
<ModalDemo @register="register" />
</PageWrapper>
</template>
<script setup>
import ModalDemo from './ModalDemo.vue';
import { useModal } from '/@/components/Modal';
const [register, { openModal }] = useModal();
const handleClick = () => {
// 传参
openModal(true, {
id: '1',
});
};
</script>
弹窗文件可以通过回调函数进行接收 ModalComponent2.vue
<template>
<BasicModal
v-bind="$attrs"
@register="register"
title="我是模态框标题"
:helpMessage="['提示1', '提示2']"
>
内容区
</BasicModal>
</template>
<script setup>
import { BasicModal, useModalInner } from '/@/components/Modal';
const [register] = useModalInner((data) => {
// 接收参数
console.log(data);
});
</script>