Commit 53a6915a943011be65074314aefd94e06f21aa03
1 parent
eaf51d3e
fixed Cascader bug
Showing
2 changed files
with
55 additions
and
52 deletions
Show diff stats
examples/routers/cascader.vue
1 | <template> | 1 | <template> |
2 | - <div style="margin: 100px;width: 200px;"> | ||
3 | - <Cascader :data="data" v-model="value1" change-on-select></Cascader> | ||
4 | - </div> | 2 | + <Cascader :data="data4" :load-data="loadData"></Cascader> |
5 | </template> | 3 | </template> |
6 | <script> | 4 | <script> |
7 | export default { | 5 | export default { |
8 | data () { | 6 | data () { |
9 | return { | 7 | return { |
10 | - value1: [], | ||
11 | - data: [{ | ||
12 | - value: 'beijing', | ||
13 | - label: '北京', | ||
14 | - children: [ | ||
15 | - { | ||
16 | - value: 'gugong', | ||
17 | - label: '故宫' | ||
18 | - }, | ||
19 | - { | ||
20 | - value: 'tiantan', | ||
21 | - label: '天坛' | ||
22 | - }, | ||
23 | - { | ||
24 | - value: 'wangfujing', | ||
25 | - label: '王府井' | ||
26 | - } | ||
27 | - ] | ||
28 | - }, { | ||
29 | - value: 'jiangsu', | ||
30 | - label: '江苏', | ||
31 | - children: [ | ||
32 | - { | ||
33 | - value: 'nanjing', | ||
34 | - label: '南京', | ||
35 | - children: [ | ||
36 | - { | ||
37 | - value: 'fuzimiao', | ||
38 | - label: '夫子庙', | ||
39 | - } | ||
40 | - ] | ||
41 | - }, | ||
42 | - { | ||
43 | - value: 'suzhou', | ||
44 | - label: '苏州', | ||
45 | - children: [ | ||
46 | - { | ||
47 | - value: 'zhuozhengyuan', | ||
48 | - label: '拙政园', | ||
49 | - }, | ||
50 | - { | ||
51 | - value: 'shizilin', | ||
52 | - label: '狮子林', | ||
53 | - } | ||
54 | - ] | ||
55 | - } | ||
56 | - ], | ||
57 | - }] | 8 | + data4: [ |
9 | + { | ||
10 | + value: 'beijing', | ||
11 | + label: '北京', | ||
12 | + children: [], | ||
13 | + loading: false | ||
14 | + }, | ||
15 | + { | ||
16 | + value: 'hangzhou', | ||
17 | + label: '杭州', | ||
18 | + children: [], | ||
19 | + loading:false | ||
20 | + } | ||
21 | + ] | ||
22 | + } | ||
23 | + }, | ||
24 | + methods: { | ||
25 | + loadData (item, callback) { | ||
26 | + item.loading = true; | ||
27 | + setTimeout(() => { | ||
28 | + console.log(1) | ||
29 | + if (item.value === 'beijing') { | ||
30 | + item.children = [ | ||
31 | +// { | ||
32 | +// value: 'talkingdata', | ||
33 | +// label: 'TalkingData' | ||
34 | +// }, | ||
35 | +// { | ||
36 | +// value: 'baidu', | ||
37 | +// label: '百度' | ||
38 | +// }, | ||
39 | +// { | ||
40 | +// value: 'sina', | ||
41 | +// label: '新浪' | ||
42 | +// } | ||
43 | + ]; | ||
44 | + } else if (item.value === 'hangzhou') { | ||
45 | + item.children = [ | ||
46 | + { | ||
47 | + value: 'ali', | ||
48 | + label: '阿里巴巴' | ||
49 | + }, | ||
50 | + { | ||
51 | + value: '163', | ||
52 | + label: '网易' | ||
53 | + } | ||
54 | + ]; | ||
55 | + } | ||
56 | + item.loading = false; | ||
57 | + callback(); | ||
58 | + }, 1000); | ||
58 | } | 59 | } |
59 | } | 60 | } |
60 | } | 61 | } |
src/components/cascader/caspanel.vue
@@ -67,7 +67,9 @@ | @@ -67,7 +67,9 @@ | ||
67 | if (fromUser) { | 67 | if (fromUser) { |
68 | cascader.isLoadedChildren = true; | 68 | cascader.isLoadedChildren = true; |
69 | } | 69 | } |
70 | - this.handleTriggerItem(item); | 70 | + if (item.children.length) { |
71 | + this.handleTriggerItem(item); | ||
72 | + } | ||
71 | }); | 73 | }); |
72 | return; | 74 | return; |
73 | } | 75 | } |