Commit 2bdeea65ec622036b516561b45a455dd4aaa6b71
1 parent
dcb48397
fix #4626 , close #4888
Showing
1 changed file
with
18 additions
and
3 deletions
Show diff stats
src/components/select/select.vue
| ... | ... | @@ -631,8 +631,8 @@ |
| 631 | 631 | } |
| 632 | 632 | this.broadcast('Drop', 'on-update-popper'); |
| 633 | 633 | setTimeout(() => { |
| 634 | - this.filterQueryChange = false; | |
| 635 | - },300) | |
| 634 | + this.filterQueryChange = false; | |
| 635 | + }, ANIMATION_TIMEOUT); | |
| 636 | 636 | }, |
| 637 | 637 | onQueryChange(query) { |
| 638 | 638 | if (query.length > 0 && query !== this.query) this.visible = true; |
| ... | ... | @@ -753,12 +753,27 @@ |
| 753 | 753 | |
| 754 | 754 | // 当 dropdown 一开始在控件下部显示,而滚动页面后变成在上部显示,如果选项列表的长度由内部动态变更了(搜索情况) |
| 755 | 755 | // dropdown 的位置不会重新计算,需要重新计算 |
| 756 | - this.broadcast('Drop', 'on-update-popper'); | |
| 756 | + this.broadcast('Drop', 'on-update-popper'); | |
| 757 | 757 | }, |
| 758 | 758 | visible(state){ |
| 759 | 759 | this.$emit('on-open-change', state); |
| 760 | 760 | }, |
| 761 | 761 | slotOptions(options, old){ |
| 762 | + // #4626,当 Options 的 label 更新时,v-model 的值未更新 | |
| 763 | + if (options && options.length && this.values.length) { | |
| 764 | + this.values = this.values.map(value => { | |
| 765 | + const option = options.find(option => option.componentOptions.propsData.value === value.value); | |
| 766 | + | |
| 767 | + if(!option) return null; | |
| 768 | + | |
| 769 | + const label = getOptionLabel(option); | |
| 770 | + return { | |
| 771 | + value: value.value, | |
| 772 | + label: label | |
| 773 | + }; | |
| 774 | + }).filter(Boolean); | |
| 775 | + } | |
| 776 | + | |
| 762 | 777 | // 当 dropdown 在控件上部显示时,如果选项列表的长度由外部动态变更了, |
| 763 | 778 | // dropdown 的位置会有点问题,需要重新计算 |
| 764 | 779 | if (options && old && options.length !== old.length) { | ... | ... |