From 753720d9bd8e8583b92a70620a04bde2c34e92c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= Date: Wed, 29 Aug 2018 14:37:45 +0800 Subject: [PATCH] Tabs add prop beforeRemove, close #4379 --- examples/routers/tabs.vue | 212 +++-------------------------------- src/components/tabs/tabs.vue | 18 ++- 2 files changed, 34 insertions(+), 196 deletions(-) diff --git a/examples/routers/tabs.vue b/examples/routers/tabs.vue index fae815b5..083324e0 100644 --- a/examples/routers/tabs.vue +++ b/examples/routers/tabs.vue @@ -1,77 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/components/tabs/tabs.vue b/src/components/tabs/tabs.vue index 1e966061..f94abc15 100644 --- a/src/components/tabs/tabs.vue +++ b/src/components/tabs/tabs.vue @@ -91,7 +91,8 @@ closable: { type: Boolean, default: false - } + }, + beforeRemove: Function, }, data () { return { @@ -247,6 +248,21 @@ this.handleChange(index); }, handleRemove (index) { + if (!this.beforeRemove) { + return this.handleRemoveTab(index); + } + + const before = this.beforeRemove(index); + + if (before && before.then) { + before.then(() => { + this.handleRemoveTab(index); + }); + } else { + this.handleRemoveTab(index); + } + }, + handleRemoveTab (index) { const tabs = this.getTabs(); const tab = tabs[index]; tab.$destroy();