Commit b3279b71d9c3c39c238f390617654fcb6d2ac006
1 parent
902a2cf5
fix select
Showing
2 changed files
with
14 additions
and
5 deletions
Show diff stats
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) { |