|
@@ -55,13 +55,14 @@
|
|
|
},
|
|
|
|
|
|
methods: {
|
|
|
- calcPaneInstances() {
|
|
|
+ calcPaneInstances(isLabelUpdated = false) {
|
|
|
if (this.$slots.default) {
|
|
|
const paneSlots = this.$slots.default.filter(vnode => vnode.tag &&
|
|
|
vnode.componentOptions && vnode.componentOptions.Ctor.options.name === 'ElTabPane');
|
|
|
// update indeed
|
|
|
const panes = paneSlots.map(({ componentInstance }) => componentInstance);
|
|
|
- if (!(panes.length === this.panes.length && panes.every((pane, index) => pane === this.panes[index]))) {
|
|
|
+ const panesChanged = !(panes.length === this.panes.length && panes.every((pane, index) => pane === this.panes[index]));
|
|
|
+ if (isLabelUpdated || panesChanged) {
|
|
|
this.panes = panes;
|
|
|
}
|
|
|
} else if (this.panes.length !== 0) {
|
|
@@ -172,6 +173,8 @@
|
|
|
if (!this.currentName) {
|
|
|
this.setCurrentName('0');
|
|
|
}
|
|
|
+
|
|
|
+ this.$on('tabLabelChanged', this.calcPaneInstances.bind(null, true));
|
|
|
},
|
|
|
|
|
|
mounted() {
|