Commit 53a6915a943011be65074314aefd94e06f21aa03

Authored by 梁灏
1 parent eaf51d3e

fixed Cascader bug

examples/routers/cascader.vue
1 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 3 </template>
6 4 <script>
7 5 export default {
8 6 data () {
9 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 67 if (fromUser) {
68 68 cascader.isLoadedChildren = true;
69 69 }
70   - this.handleTriggerItem(item);
  70 + if (item.children.length) {
  71 + this.handleTriggerItem(item);
  72 + }
71 73 });
72 74 return;
73 75 }
... ...