element-plus 封装确认框
时间: 2023-09-30 07:05:05 浏览: 106
element-plus
您好!element-plus提供了一个el-dialog组件,可以用于实现确认框的功能。以下是一个简单的封装示例:
```vue
<template>
<el-dialog
:title="title"
:visible.sync="dialogVisible"
:before-close="handleBeforeClose"
@close="handleClose"
@confirm="handleConfirm"
>
<span>{{ message }}</span>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="handleConfirm">确定</el-button>
</div>
</el-dialog>
</template>
<script>
export default {
props: {
title: {
type: String,
default: "提示"
},
message: {
type: String,
default: ""
}
},
data() {
return {
dialogVisible: false
};
},
methods: {
handleBeforeClose(done) {
// 点击遮罩层时不关闭对话框
done(false);
},
handleClose() {
// 对话框关闭时触发
},
handleConfirm() {
// 点击确定按钮时触发
this.$emit("confirm");
this.dialogVisible = false;
},
open() {
// 打开对话框
this.dialogVisible = true;
}
}
};
</script>
```
使用示例:
```vue
<template>
<div>
<el-button @click="handleClick">点击打开确认框</el-button>
<MyDialog ref="dialog" :message="message" @confirm="handleConfirm" />
</div>
</template>
<script>
import MyDialog from "@/components/MyDialog";
export default {
components: {
MyDialog
},
data() {
return {
message: "确定执行该操作吗?"
};
},
methods: {
handleClick() {
this.$refs.dialog.open();
},
handleConfirm() {
// 确认操作
}
}
};
</script>
```
在父组件中引入MyDialog组件,并通过ref属性获取组件实例,在需要显示确认框时调用open方法即可。在MyDialog组件中,重写了对话框的before-close事件,禁止了点击遮罩层时自动关闭对话框的功能,以保证用户必须点击“确定”或“取消”按钮才能关闭对话框。同时,MyDialog组件也提供了确认按钮的回调事件,方便父组件在用户点击“确定”按钮后执行相应的操作。
阅读全文