diff --git a/examples/routers/drawer.vue b/examples/routers/drawer.vue index c1f000dd..d25af88b 100644 --- a/examples/routers/drawer.vue +++ b/examples/routers/drawer.vue @@ -5,7 +5,7 @@
一些内容
一些内容
一些内容
@@ -209,6 +209,20 @@ }, hrw (w) { console.log(w); + }, + handleBeforeClose () { + return new Promise((resolve, reject) => { + this.$Modal.confirm({ + title: '关闭确认', + content: '您确认要关闭抽屉吗?', + onOk: () => { + resolve(); + }, + onCancel: () => { + reject(); + } + }); + }); } } }; diff --git a/src/components/drawer/drawer.vue b/src/components/drawer/drawer.vue index 09512b91..dd6df410 100644 --- a/src/components/drawer/drawer.vue +++ b/src/components/drawer/drawer.vue @@ -106,7 +106,8 @@ draggable: { type: Boolean, default: false - } + }, + beforeClose: Function, }, data () { return { @@ -176,6 +177,21 @@ }, methods: { close () { + if (!this.beforeClose) { + return this.handleClose(); + } + + const before = this.beforeClose(); + + if (before && before.then) { + before.then(() => { + this.handleClose(); + }); + } else { + this.handleClose(); + } + }, + handleClose () { this.visible = false; this.$emit('input', false); this.$emit('on-close');