<template>
<el-dialog
:title="title"
:visible.sync="visible"
:width="width"
:top="top"
:close-on-click-modal="false"
:close-on-press-escape="false"
@close="handleClose"
>
<slot></slot>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancel">取 消</el-button>
<el-button type="primary" @click="handleConfirm">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
name: 'MyDialog',
props: {
title: {
type: String,
default: '提示'
},
visible: {
type: Boolean,
default: false
},
width: {
type: String,
default: '30%'
},
top: {
type: String,
default: '15vh'
}
},
methods: {
handleClose() {
this.$emit('update:visible', false);
},
handleCancel() {
this.handleClose();
},
handleConfirm() {
this.$emit('confirm');
this.handleClose();
}
}
}
</script>
这个代码实例展示了如何使用Vue和ElementUI进行对话框组件的二次封装。通过定义MyDialog
组件,我们可以复用对话框的功能和样式,并且可以通过props传递标题、可见性、宽度和位置等属性,同时定义了confirm
和cancel
事件处理函数,这些函数负责关闭对话框并可以进一步处理用户的确认或取消操作。