63 lines
1.3 KiB
Vue
63 lines
1.3 KiB
Vue
<docs>
|
||
---
|
||
order: 1
|
||
title:
|
||
zh-CN: 异步关闭
|
||
en-US: Asynchronously close
|
||
---
|
||
|
||
## zh-CN
|
||
|
||
点击确定后异步关闭对话框,例如提交表单。
|
||
|
||
## en-US
|
||
|
||
Asynchronously close a modal dialog when a user clicked OK button, for example,
|
||
you can use this pattern when you submit a form.
|
||
|
||
</docs>
|
||
|
||
<template>
|
||
<div>
|
||
<a-button type="primary" @click="showModal">Open Modal with async logic</a-button>
|
||
<a-modal
|
||
v-model:visible="visible"
|
||
title="Title"
|
||
:confirm-loading="confirmLoading"
|
||
@ok="handleOk"
|
||
>
|
||
<p>{{ modalText }}</p>
|
||
</a-modal>
|
||
</div>
|
||
</template>
|
||
<script lang="ts">
|
||
import { ref, defineComponent } from 'vue';
|
||
export default defineComponent({
|
||
setup() {
|
||
const modalText = ref<string>('Content of the modal');
|
||
const visible = ref<boolean>(false);
|
||
const confirmLoading = ref<boolean>(false);
|
||
|
||
const showModal = () => {
|
||
visible.value = true;
|
||
};
|
||
|
||
const handleOk = () => {
|
||
modalText.value = 'The modal will be closed after two seconds';
|
||
confirmLoading.value = true;
|
||
setTimeout(() => {
|
||
visible.value = false;
|
||
confirmLoading.value = false;
|
||
}, 2000);
|
||
};
|
||
return {
|
||
modalText,
|
||
visible,
|
||
confirmLoading,
|
||
showModal,
|
||
handleOk,
|
||
};
|
||
},
|
||
});
|
||
</script>
|