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 | } |