Commit b3279b71d9c3c39c238f390617654fcb6d2ac006

Authored by oyv1cent
1 parent 902a2cf5

fix select

src/components/select/functional-options.vue
@@ -18,11 +18,17 @@ @@ -18,11 +18,17 @@
18 }, 18 },
19 }, 19 },
20 functional: true, 20 functional: true,
21 - render(h, {props, parent}){  
22 - // to detect changes in the $slot children/options we do this hack  
23 - // so we can trigger the parents computed properties and have everything reactive  
24 - // although $slot.default is not  
25 - if (props.slotOptions !== parent.$slots.default) props.slotUpdateHook(); 21 + render(h, {props, parent}) {
  22 + // In order to response data changes,i do this hack. #4372
  23 + if(props.slotOptions.length > 0) {
  24 + for(let i in props.slotOptions) {
  25 + if(props.slotOptions[i].key !== parent.$slots.default[i].key) {
  26 + props.slotUpdateHook();
  27 + break;
  28 + }
  29 + }
  30 + }
  31 + if(props.slotOptions && parent.$slots.default && props.slotOptions.length !== parent.$slots.default.length) props.slotUpdateHook();
26 return props.options; 32 return props.options;
27 } 33 }
28 }; 34 };
src/components/select/select.vue
@@ -635,6 +635,9 @@ @@ -635,6 +635,9 @@
635 }, 635 },
636 updateSlotOptions(){ 636 updateSlotOptions(){
637 this.slotOptions = this.$slots.default; 637 this.slotOptions = this.$slots.default;
  638 + // #4372 issue, i find that this.query's value affects the judgment of the validateOption method.
  639 + this.query = '';
  640 + this.focusIndex = -1;
638 }, 641 },
639 checkUpdateStatus() { 642 checkUpdateStatus() {
640 if (this.getInitialValue().length > 0 && this.selectOptions.length === 0) { 643 if (this.getInitialValue().length > 0 && this.selectOptions.length === 0) {