Commit 2bdeea65ec622036b516561b45a455dd4aaa6b71

Authored by 梁灏
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,8 +631,8 @@
631 } 631 }
632 this.broadcast('Drop', 'on-update-popper'); 632 this.broadcast('Drop', 'on-update-popper');
633 setTimeout(() => { 633 setTimeout(() => {
634 - this.filterQueryChange = false;  
635 - },300) 634 + this.filterQueryChange = false;
  635 + }, ANIMATION_TIMEOUT);
636 }, 636 },
637 onQueryChange(query) { 637 onQueryChange(query) {
638 if (query.length > 0 && query !== this.query) this.visible = true; 638 if (query.length > 0 && query !== this.query) this.visible = true;
@@ -753,12 +753,27 @@ @@ -753,12 +753,27 @@
753 753
754 // 当 dropdown 一开始在控件下部显示,而滚动页面后变成在上部显示,如果选项列表的长度由内部动态变更了(搜索情况) 754 // 当 dropdown 一开始在控件下部显示,而滚动页面后变成在上部显示,如果选项列表的长度由内部动态变更了(搜索情况)
755 // dropdown 的位置不会重新计算,需要重新计算 755 // dropdown 的位置不会重新计算,需要重新计算
756 - this.broadcast('Drop', 'on-update-popper'); 756 + this.broadcast('Drop', 'on-update-popper');
757 }, 757 },
758 visible(state){ 758 visible(state){
759 this.$emit('on-open-change', state); 759 this.$emit('on-open-change', state);
760 }, 760 },
761 slotOptions(options, old){ 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 // 当 dropdown 在控件上部显示时,如果选项列表的长度由外部动态变更了, 777 // 当 dropdown 在控件上部显示时,如果选项列表的长度由外部动态变更了,
763 // dropdown 的位置会有点问题,需要重新计算 778 // dropdown 的位置会有点问题,需要重新计算
764 if (options && old && options.length !== old.length) { 779 if (options && old && options.length !== old.length) {