Commit 5b143a2b3f0d690f6a48b251203c68de97abe55d
1 parent
c9985ada
fixed #5401 , close #5403
Showing
3 changed files
with
22 additions
and
39 deletions
Show diff stats
examples/routers/tabs.vue
1 | 1 | <template> |
2 | - <Tabs type="card" :animated="true" closable @on-tab-remove="handleTabRemove" :beforeRemove="handleBeforeRemove"> | |
3 | - <Wrapper> | |
4 | - <TabPane label="标签一" v-if="tab0">标签一的内容</TabPane> | |
5 | - <TabPane label="标签二" v-if="tab1">标签二的内容</TabPane> | |
6 | - <TabPane label="标签三" v-if="tab2">标签三的内容</TabPane> | |
7 | - </Wrapper> | |
8 | - </Tabs> | |
9 | - | |
10 | - <!--<Tabs type="card" :animated="true" closable @on-tab-remove="handleTabRemove" :beforeRemove="handleBeforeRemove">--> | |
11 | - <!--<TabPane label="标签一" v-if="tab0">标签一的内容</TabPane>--> | |
12 | - <!--<TabPane label="标签二" v-if="tab1">标签二的内容</TabPane>--> | |
13 | - <!--<TabPane label="标签三" v-if="tab2">标签三的内容</TabPane>--> | |
14 | - <!--</Tabs>--> | |
2 | + <div> | |
3 | + <Button @click="showSecond = !showSecond">change</Button> | |
4 | + <Tabs value="name1"> | |
5 | + <TabPane label="标签一" name="name1" :index="1">标签一的内容</TabPane> | |
6 | + <TabPane label="标签二" name="name2" :index="2" v-if="showSecond">标签二的内容</TabPane> | |
7 | + <TabPane label="标签三" name="name3" :index="3">标签三的内容</TabPane> | |
8 | + </Tabs> | |
9 | + </div> | |
15 | 10 | </template> |
16 | 11 | <script> |
17 | - import Wrapper from '../components/wrapper.vue'; | |
18 | 12 | export default { |
19 | - components: { Wrapper }, | |
20 | 13 | data () { |
21 | 14 | return { |
22 | - tab0: true, | |
23 | - tab1: true, | |
24 | - tab2: true | |
25 | - } | |
26 | - }, | |
27 | - methods: { | |
28 | - handleTabRemove (name) { | |
29 | - this['tab' + name] = false; | |
30 | - }, | |
31 | - handleBeforeRemove (index) { | |
32 | - console.log(index); | |
33 | - | |
34 | - return new Promise((resolve, reject) => { | |
35 | - this.$Modal.confirm({ | |
36 | - title: 'Title', | |
37 | - content: '<p>Content of dialog</p><p>Content of dialog</p>', | |
38 | - onOk: () => { | |
39 | - resolve(); | |
40 | - }, | |
41 | - onCancel: () => { | |
42 | - reject(); | |
43 | - } | |
44 | - }); | |
45 | - }); | |
15 | + showSecond: false | |
46 | 16 | } |
47 | 17 | } |
48 | 18 | } | ... | ... |
src/components/tabs/pane.vue
src/components/tabs/tabs.vue
... | ... | @@ -187,6 +187,14 @@ |
187 | 187 | } |
188 | 188 | }); |
189 | 189 | |
190 | + // 在 TabPane 使用 v-if 时,并不会按照预先的顺序渲染,这时可设置 index,并从小到大排序 | |
191 | + TabPanes.sort((a, b) => { | |
192 | + if (a.index && b.index) { | |
193 | + return a.index > b.index ? 1 : -1; | |
194 | + } else { | |
195 | + return 1; | |
196 | + } | |
197 | + }); | |
190 | 198 | return TabPanes; |
191 | 199 | }, |
192 | 200 | updateNav () { | ... | ... |