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 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 增加 - - - - - - Some text... - Some focusable content...{{ tab }} - - - - - 标签一的内容 - 标签二的内容 - 标签三的内容 - - - - 1 - - - 2 - - - 3 - - - 4 - - - 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();