Commit 53a6915a943011be65074314aefd94e06f21aa03

Authored by 梁灏
1 parent eaf51d3e

fixed Cascader bug

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 }