Commit ddc35c9aaaa0357d8f7b30185c92019ca4cc7322
1 parent
3842df9a
fixed #952
Showing
2 changed files
with
30 additions
and
3 deletions
Show diff stats
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'); |