Commit ddc35c9aaaa0357d8f7b30185c92019ca4cc7322

Authored by 梁灏
1 parent 3842df9a

fixed #952

examples/routers/select.vue
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 <Row> 2 <Row>
3 <i-col span="4">{{model}}</i-col> 3 <i-col span="4">{{model}}</i-col>
4 <i-col span="8"> 4 <i-col span="8">
5 - <i-select v-model="model" @input="handleInput" filterable remote :remote-method="remoteMethod" :loading="loading" clearable> 5 + <i-select v-model="model" :label="['L Alabama', 'L Hawaii']" multiple @input="handleInput" filterable remote :remote-method="remoteMethod" :loading="loading" clearable>
6 <i-option v-for="option in options" :value="option.value" :key="new Date()">{{option.label}}</i-option> 6 <i-option v-for="option in options" :value="option.value" :key="new Date()">{{option.label}}</i-option>
7 </i-select> 7 </i-select>
8 </i-col> 8 </i-col>
@@ -13,7 +13,8 @@ @@ -13,7 +13,8 @@
13 export default { 13 export default {
14 data () { 14 data () {
15 return { 15 return {
16 - model: '', 16 +// model: 'Alabama',
  17 + model: ['Alabama', 'Hawaii'],
17 options: [ 18 options: [
18 19
19 ], 20 ],
@@ -74,6 +75,7 @@ @@ -74,6 +75,7 @@
74 ] 75 ]
75 }, 76 },
76 remoteMethod (query) { 77 remoteMethod (query) {
  78 + console.log(13)
77 if (query !== '') { 79 if (query !== '') {
78 this.loading = true; 80 this.loading = true;
79 setTimeout(() => { 81 setTimeout(() => {
src/components/select/select.vue
@@ -53,6 +53,10 @@ @@ -53,6 +53,10 @@
53 type: [String, Number, Array], 53 type: [String, Number, Array],
54 default: '' 54 default: ''
55 }, 55 },
  56 + label: {
  57 + type: [String, Number, Array],
  58 + default: ''
  59 + },
56 multiple: { 60 multiple: {
57 type: Boolean, 61 type: Boolean,
58 default: false 62 default: false
@@ -303,7 +307,6 @@ @@ -303,7 +307,6 @@
303 }, 307 },
304 updateMultipleSelected (init = false, slot = false) { 308 updateMultipleSelected (init = false, slot = false) {
305 if (this.multiple && Array.isArray(this.model)) { 309 if (this.multiple && Array.isArray(this.model)) {
306 - // todo 这里的 label 有问题,另删除字符时也有问题  
307 let selected = this.remote ? this.selectedMultiple : []; 310 let selected = this.remote ? this.selectedMultiple : [];
308 311
309 for (let i = 0; i < this.model.length; i++) { 312 for (let i = 0; i < this.model.length; i++) {
@@ -584,6 +587,23 @@ @@ -584,6 +587,23 @@
584 }, 587 },
585 mounted () { 588 mounted () {
586 this.modelToQuery(); 589 this.modelToQuery();
  590 + // 处理 remote 初始值
  591 + if (this.remote) {
  592 + if (!this.multiple && this.model !== '') {
  593 + this.selectToChangeQuery = true;
  594 + if (this.label === '') this.label = this.model;
  595 + this.lastQuery = this.label;
  596 + this.query = this.label;
  597 + } else if (this.multiple && this.model.length) {
  598 + if (this.label.length !== this.model.length) this.label = this.model;
  599 + this.selectedMultiple = this.model.map((item, index) => {
  600 + return {
  601 + value: item,
  602 + label: this.label[index]
  603 + };
  604 + });
  605 + }
  606 + }
587 this.$nextTick(() => { 607 this.$nextTick(() => {
588 this.broadcastQuery(''); 608 this.broadcastQuery('');
589 }); 609 });
@@ -687,6 +707,11 @@ @@ -687,6 +707,11 @@
687 this.findChild(child => { 707 this.findChild(child => {
688 child.selected = this.multiple ? this.model.indexOf(child.value) > -1 : this.model === child.value; 708 child.selected = this.multiple ? this.model.indexOf(child.value) > -1 : this.model === child.value;
689 }); 709 });
  710 + // remote下,设置了默认值,第一次打开时,搜索一次
  711 + const options = this.$slots.default || [];
  712 + if (this.query !== '' && !options.length) {
  713 + this.remoteMethod(this.query);
  714 + }
690 } 715 }
691 } 716 }
692 this.broadcast('Drop', 'on-update-popper'); 717 this.broadcast('Drop', 'on-update-popper');