elementui el-dialog 的二次封装
在Vue.js中使用Element UI时,可以通过二次封装el-dialog
组件来简化对话框的使用。以下是一个简单的BaseDialog
组件的示例,它封装了el-dialog
的基本行为,并允许通过props来控制其显示和隐藏。
<template>
<el-dialog
:title="title"
:visible.sync="visible"
:width="width"
:before-close="handleClose">
<slot></slot>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="handleConfirm">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
export default {
props: {
title: {
type: String,
default: 'Dialog Title'
},
width: {
type: String,
default: '50%'
},
value: {
type: Boolean,
default: false
}
},
computed: {
visible: {
get() {
return this.value;
},
set(value) {
this.$emit('input', value);
this.$emit('update:visible', value);
}
}
},
methods: {
handleClose() {
this.visible = false;
},
handleConfirm() {
this.$emit('confirm');
this.handleClose();
}
}
};
</script>
使用BaseDialog
组件时,你可以通过v-model
来控制对话框的显示,并且可以通过@confirm
事件来处理确认操作。
<template>
<base-dialog v-model="dialogVisible" title="示例对话框" @confirm="handleConfirm">
<!-- 这里放置对话框内容 -->
<p>这是一个示例对话框的内容</p>
</base-dialog>
</template>
<script>
import BaseDialog from './BaseDialog.vue';
export default {
components: {
BaseDialog
},
data() {
return {
dialogVisible: false
};
},
methods: {
handleConfirm() {
// 处理确认事件
console.log('对话框确认');
}
}
};
</script>
在这个例子中,BaseDialog
组件通过v-model
将visible
属性与父组件的dialogVisible
数据属性连接起来,实现对话框的显示与隐藏。同时,它定义了一个handleConfirm
方法来处理确认事件,你可以在这个方法中执行任何需要的操作。
评论已关闭