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) { | ... | ... |