diff --git a/packages/tab/index.vue b/packages/tab/index.vue
index 83ca2f06a..e60b04426 100644
--- a/packages/tab/index.vue
+++ b/packages/tab/index.vue
@@ -1,6 +1,9 @@
@@ -45,6 +48,12 @@ export default create({
this.parent.tabs.push(this);
},
+ mounted() {
+ if (this.$slots.title) {
+ this.parent.renderTitle(this.$refs.title, this.index);
+ }
+ },
+
destroyed() {
this.parent.tabs.splice(this.index, 1);
}
diff --git a/packages/tab/test/__snapshots__/demo.spec.js.snap b/packages/tab/test/__snapshots__/demo.spec.js.snap
index e72e3fe70..b39b1035d 100644
--- a/packages/tab/test/__snapshots__/demo.spec.js.snap
+++ b/packages/tab/test/__snapshots__/demo.spec.js.snap
@@ -12,15 +12,19 @@ exports[`renders demo correctly 1`] = `
@@ -35,27 +39,35 @@ exports[`renders demo correctly 1`] = `
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -70,15 +82,19 @@ exports[`renders demo correctly 1`] = `
@@ -93,15 +109,19 @@ exports[`renders demo correctly 1`] = `
@@ -116,15 +136,19 @@ exports[`renders demo correctly 1`] = `
@@ -139,15 +163,19 @@ exports[`renders demo correctly 1`] = `
@@ -162,9 +190,23 @@ exports[`renders demo correctly 1`] = `
@@ -179,15 +221,19 @@ exports[`renders demo correctly 1`] = `
diff --git a/packages/tabs/index.vue b/packages/tabs/index.vue
index 3e40d0c54..1d11dde03 100644
--- a/packages/tabs/index.vue
+++ b/packages/tabs/index.vue
@@ -19,8 +19,7 @@
}"
@click="onClick(index)"
>
-
- {{ tab.title }}
+ {{ tab.title }}
@@ -34,7 +33,6 @@
import create from '../utils/create';
import { raf } from '../utils/raf';
import { on, off } from '../utils/event';
-import VanNode from '../utils/node';
import scrollUtils from '../utils/scroll';
import Touch from '../mixins/touch';
@@ -43,10 +41,6 @@ export default create({
mixins: [Touch],
- components: {
- VanNode
- },
-
model: {
prop: 'active'
},
@@ -261,6 +255,14 @@ export default create({
}
};
animate();
+ },
+
+ // render title slot of child tab
+ renderTitle(el, index) {
+ this.$nextTick(() => {
+ const title = this.$refs.title[index];
+ title.parentNode.replaceChild(el, title);
+ });
}
}
});
diff --git a/packages/utils/node.js b/packages/utils/node.js
deleted file mode 100644
index e19f98168..000000000
--- a/packages/utils/node.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * VNode helper
- */
-export default {
- name: 'van-node',
- functional: true,
- props: {
- node: Array
- },
- render(h, ctx) {
- return ctx.props.node;
- }
-};