Commit bdfab3b99e9b04b992ffd0c4c9051668e88ab96e

Authored by 梁灏
1 parent 7b3d5ec1

fixed #1842

Showing 2 changed files with 85 additions and 60 deletions   Show diff stats
examples/routers/tabs.vue
  1 +<!--<template>-->
  2 + <!--<Tabs value="name1" :animated="false">-->
  3 + <!--<Tab-pane label="test" name="test">-->
  4 + <!--<Tabs type="card" v-bind:animated="true">-->
  5 + <!--<Tab-pane label="标签2一">标签2一的内容</Tab-pane>-->
  6 + <!--<Tab-pane label="标签2二">标签2二的内容</Tab-pane>-->
  7 + <!--<Tab-pane label="标签2三">标签2三的内容</Tab-pane>-->
  8 + <!--</Tabs>-->
  9 + <!--</Tab-pane>-->
  10 + <!--<Tab-pane :label="label1" name="name1">-->
  11 + <!--<Table :columns="columns1" :data="data1"></Table>-->
  12 + <!--</Tab-pane>-->
  13 + <!--<Tab-pane label="标签二" name="name2">-->
  14 + <!--<Table :columns="columns1" :data="data1"></Table>-->
  15 + <!--</Tab-pane>-->
  16 + <!--<Tab-pane label="标签三" name="name3">-->
  17 + <!--<Table :columns="columns1" :data="data1"></Table>-->
  18 + <!--</Tab-pane>-->
  19 + <!--</Tabs>-->
  20 +<!--</template>-->
  21 +<!--<script>-->
  22 + <!--export default {-->
  23 + <!--data () {-->
  24 + <!--return {-->
  25 + <!--label1: (h) => {-->
  26 + <!--return h('div', [-->
  27 + <!--h('span', '标签一'),-->
  28 + <!--h('Button', 'button')-->
  29 + <!--]);-->
  30 + <!--},-->
  31 + <!--columns1: [-->
  32 + <!--{-->
  33 + <!--title: '姓名',-->
  34 + <!--key: 'name'-->
  35 + <!--},-->
  36 + <!--{-->
  37 + <!--title: '年龄',-->
  38 + <!--key: 'age'-->
  39 + <!--},-->
  40 + <!--{-->
  41 + <!--title: '地址',-->
  42 + <!--key: 'address'-->
  43 + <!--}-->
  44 + <!--],-->
  45 + <!--data1: [-->
  46 + <!--{-->
  47 + <!--name: '王小明',-->
  48 + <!--age: 18,-->
  49 + <!--address: '北京市朝阳区芍药居'-->
  50 + <!--},-->
  51 + <!--{-->
  52 + <!--name: '张小刚',-->
  53 + <!--age: 25,-->
  54 + <!--address: '北京市海淀区西二旗'-->
  55 + <!--},-->
  56 + <!--{-->
  57 + <!--name: '李小红',-->
  58 + <!--age: 30,-->
  59 + <!--address: '上海市浦东新区世纪大道'-->
  60 + <!--},-->
  61 + <!--{-->
  62 + <!--name: '周小伟',-->
  63 + <!--age: 26,-->
  64 + <!--address: '深圳市南山区深南大道'-->
  65 + <!--}-->
  66 + <!--]-->
  67 + <!--}-->
  68 + <!--}-->
  69 + <!--}-->
  70 +<!--</script>-->
  71 +
  72 +
1 73 <template>
2   - <Tabs value="name1" :animated="false">
3   - <Tab-pane label="test" name="test">
4   - <Tabs type="card" v-bind:animated="true">
5   - <Tab-pane label="标签2一">标签2一的内容</Tab-pane>
6   - <Tab-pane label="标签2二">标签2二的内容</Tab-pane>
7   - <Tab-pane label="标签2三">标签2三的内容</Tab-pane>
8   - </Tabs>
9   - </Tab-pane>
10   - <Tab-pane :label="label1" name="name1">
11   - <Table :columns="columns1" :data="data1"></Table>
12   - </Tab-pane>
13   - <Tab-pane label="标签二" name="name2">
14   - <Table :columns="columns1" :data="data1"></Table>
15   - </Tab-pane>
16   - <Tab-pane label="标签三" name="name3">
17   - <Table :columns="columns1" :data="data1"></Table>
18   - </Tab-pane>
  74 + <Tabs type="card" closable @on-tab-remove="handleTabRemove">
  75 + <TabPane label="标签一" v-if="tab0">标签一的内容</TabPane>
  76 + <TabPane label="标签二" v-if="tab1">标签二的内容</TabPane>
  77 + <TabPane label="标签三" v-if="tab2">标签三的内容</TabPane>
19 78 </Tabs>
20 79 </template>
21 80 <script>
22 81 export default {
23 82 data () {
24 83 return {
25   - label1: (h) => {
26   - return h('div', [
27   - h('span', '标签一'),
28   - h('Button', 'button')
29   - ]);
30   - },
31   - columns1: [
32   - {
33   - title: '姓名',
34   - key: 'name'
35   - },
36   - {
37   - title: '年龄',
38   - key: 'age'
39   - },
40   - {
41   - title: '地址',
42   - key: 'address'
43   - }
44   - ],
45   - data1: [
46   - {
47   - name: '王小明',
48   - age: 18,
49   - address: '北京市朝阳区芍药居'
50   - },
51   - {
52   - name: '张小刚',
53   - age: 25,
54   - address: '北京市海淀区西二旗'
55   - },
56   - {
57   - name: '李小红',
58   - age: 30,
59   - address: '上海市浦东新区世纪大道'
60   - },
61   - {
62   - name: '周小伟',
63   - age: 26,
64   - address: '深圳市南山区深南大道'
65   - }
66   - ]
  84 + tab0: true,
  85 + tab1: true,
  86 + tab2: true
  87 + }
  88 + },
  89 + methods: {
  90 + handleTabRemove (name) {
  91 + this['tab' + name] = false;
67 92 }
68 93 }
69 94 }
... ...
src/components/tabs/tabs.vue
... ... @@ -150,7 +150,7 @@
150 150 const index = this.navList.findIndex((nav) => nav.name === this.activeKey);
151 151 const prevTabs = this.$refs.nav.querySelectorAll(`.${prefixCls}-tab`);
152 152 const tab = prevTabs[index];
153   - this.barWidth = parseFloat(tab.offsetWidth);
  153 + this.barWidth = tab ? parseFloat(tab.offsetWidth) : 0;
154 154  
155 155 if (index > 0) {
156 156 let offset = 0;
... ...