Commit c736b0f1e04f25ec3915e30683e68095be1098fc

Authored by 梁灏
1 parent 7fe58637

fix #4189

examples/routers/cascader.vue
1 <template> 1 <template>
2 - <Cascader :data="data4" :load-data="loadData"></Cascader> 2 + <div>
  3 + <Row>
  4 + <i-col span="18">
  5 + <i-button v-on:click="setValue">setValue</i-button>
  6 + </i-col>
  7 + <i-col span="4">
  8 + <Cascader :data="data" v-model="value1" transfer></Cascader>
  9 + </i-col>
  10 + </Row>
  11 + </div>
3 </template> 12 </template>
4 <script> 13 <script>
5 export default { 14 export default {
6 data () { 15 data () {
7 return { 16 return {
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 - ] 17 + value1: [],
  18 + data: [{
  19 + value: '9ecec83c-cf6b-4cfe-aa75-eb3510875331',
  20 + label: '北京',
  21 + children: [{
  22 + value: 'a873a9bd-7d75-4f46-9369-4d25a1feb13c',
  23 + label: '故宫'
  24 + }, {
  25 + value: 'tiantan',
  26 + label: '天坛'
  27 + }, {
  28 + value: 'wangfujing',
  29 + label: '王府井'
  30 + }]
  31 + }, {
  32 + value: 'ca7c0fbc-728d-42e8-b111-f5f73cf9171b',
  33 + label: '江苏',
  34 + children: [{
  35 + value: 'a89d891b-5c50-44c0-87b4-d4f934edc921',
  36 + label: '南京',
  37 + children: [{
  38 + value: '44736384-0ede-41ba-bf7a-59c84241851a',
  39 + label: '夫子庙中国第一庙来自南京',
  40 + children:[{
  41 + value: '44736384-0ede-41ba-bf7a-59c84241851c',
  42 + label:'自定义产品系统来自黑龙江地区'
  43 + }]
  44 + }]
  45 + }, {
  46 + value: 'suzhou',
  47 + label: '苏州',
  48 + children: [{
  49 + value: 'zhuozhengyuan',
  50 + label: '拙政园',
  51 + }, {
  52 + value: 'shizilin',
  53 + label: '狮子林',
  54 + }]
  55 + }],
  56 + }]
22 } 57 }
23 }, 58 },
24 methods: { 59 methods: {
25 - loadData (item, callback) {  
26 - item.loading = true;  
27 - setTimeout(() => {  
28 - if (item.value === 'beijing') {  
29 - item.children = [  
30 - {  
31 - value: 'talkingdata',  
32 - label: 'TalkingData'  
33 - },  
34 - {  
35 - value: 'baidu',  
36 - label: '百度'  
37 - },  
38 - {  
39 - value: 'sina',  
40 - label: '新浪'  
41 - }  
42 - ];  
43 - } else if (item.value === 'hangzhou') {  
44 - item.children = [  
45 - {  
46 - value: 'ali',  
47 - label: '阿里巴巴'  
48 - },  
49 - {  
50 - value: '163',  
51 - label: '网易'  
52 - }  
53 - ];  
54 - }  
55 - item.loading = false;  
56 - callback();  
57 - }, 1000); 60 + setValue() {
  61 + var v = "ca7c0fbc-728d-42e8-b111-f5f73cf9171b,a89d891b-5c50-44c0-87b4-d4f934edc921,44736384-0ede-41ba-bf7a-59c84241851a";
  62 + var x = v.split(',')
  63 + var x1 = x[0].toString();
  64 + var x2 = x[1].toString();
  65 + var x3 = x[2].toString();
  66 +
  67 + this.value1 = x;
58 } 68 }
  69 + },
  70 + mounted () {
  71 +
59 } 72 }
60 } 73 }
61 </script> 74 </script>
  75 +<style>
  76 +
  77 +</style>
62 \ No newline at end of file 78 \ No newline at end of file
src/components/cascader/caspanel.vue
@@ -59,8 +59,8 @@ @@ -59,8 +59,8 @@
59 handleTriggerItem (item, fromInit = false, fromUser = false) { 59 handleTriggerItem (item, fromInit = false, fromUser = false) {
60 if (item.disabled) return; 60 if (item.disabled) return;
61 61
  62 + const cascader = findComponentUpward(this, 'Cascader');
62 if (item.loading !== undefined && !item.children.length) { 63 if (item.loading !== undefined && !item.children.length) {
63 - const cascader = findComponentUpward(this, 'Cascader');  
64 if (cascader && cascader.loadData) { 64 if (cascader && cascader.loadData) {
65 cascader.loadData(item, () => { 65 cascader.loadData(item, () => {
66 // todo 66 // todo
@@ -110,6 +110,10 @@ @@ -110,6 +110,10 @@
110 fromInit: fromInit 110 fromInit: fromInit
111 }); 111 });
112 } 112 }
  113 +
  114 + if (cascader) {
  115 + cascader.$refs.drop.update();
  116 + }
113 }, 117 },
114 updateResult (item) { 118 updateResult (item) {
115 this.result = [this.tmpItem].concat(item); 119 this.result = [this.tmpItem].concat(item);