Ant Design Vue框架的modal对话框组件,其简单型中,一般是一个btn组件对应一个a-modal;我设计一个页面有多个btn按钮,对应多个a-modal,一般采取不同名的visible响应每个btn,如果是2-3个,还好处理,如下方代码。
但如果是10个以上,怎么办?不断地设置不同的响应变量吗?
<template>
<div>
<a-button type="primary" @click="showModal1">Open Modal1</a-button>
<a-modal v-model:visible="visible1" title="Basic Modal" @ok="handleOk">
<p>Some contents...1</p>
</a-modal>
<a-button type="primary" @click="showModal2">Open Modal1</a-button>
<a-modal v-model:visible="visible2" title="Basic Modal" @ok="handleOk">
<p>Some contents...2</p>
</a-modal>
<a-button type="primary" @click="showModal3">Open Modal1</a-button>
<a-modal v-model:visible="visible3" title="Basic Modal" @ok="handleOk">
<p>Some contents...3</p>
</a-modal>
<a-button type="primary" @click="showModal4">Open Modal1</a-button>
<a-modal v-model:visible="visible4" title="Basic Modal" @ok="handleOk">
<p>Some contents...4</p>
</a-modal>
......
</div>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const visible1 = ref(false);
......
const showModal1 = () => {
visible1.value = true;
};
......
return {
visible1,
.......
};
},
});
</script>
新手上路,还望勿见笑
比如类似下面这样的形式
可以用枚举,减少变量使用,modal如果配置上没啥区别,只是内容不一样的话,那变化内容就行了,modal就用一个,具体要看内容多复杂,如果只是像示例中文案不同,那用compute根据具体枚举返回对应文案就可以了。如果是复杂的结构,那可以抽象成组件,用component去映射到对应组件即可,这样就不需要很多变量,也不需要写一堆if...else