Commit 7f63e58ced806a28e730483ab8dfa26ebce0057b
1 parent
cf753854
Make possible for v-model to wait for async options
Showing
1 changed file
with
13 additions
and
2 deletions
Show diff stats
src/components/select/select.vue
| ... | ... | @@ -179,9 +179,13 @@ |
| 179 | 179 | this.$on('on-select-selected', this.onOptionClick); |
| 180 | 180 | |
| 181 | 181 | // set the initial values if there are any |
| 182 | - if (this.values.length > 0 && !this.remote){ | |
| 182 | + if (this.values.length > 0 && !this.remote && this.selectOptions.length > 0){ | |
| 183 | 183 | this.values = this.values.map(this.getOptionData); |
| 184 | 184 | } |
| 185 | + | |
| 186 | + if (this.values.length > 0 && this.selectOptions.length === 0){ | |
| 187 | + this.hasExpectedValue = this.values; | |
| 188 | + } | |
| 185 | 189 | }, |
| 186 | 190 | data () { |
| 187 | 191 | |
| ... | ... | @@ -198,6 +202,7 @@ |
| 198 | 202 | slotOptions: this.$slots.default, |
| 199 | 203 | caretPosition: -1, |
| 200 | 204 | lastRemoteQuery: '', |
| 205 | + hasExpectedValue: false, | |
| 201 | 206 | }; |
| 202 | 207 | }, |
| 203 | 208 | computed: { |
| ... | ... | @@ -337,7 +342,7 @@ |
| 337 | 342 | }, |
| 338 | 343 | getOptionData(value){ |
| 339 | 344 | const option = this.flatOptions.find(({componentOptions}) => componentOptions.propsData.value === value); |
| 340 | - if (!option) return {}; | |
| 345 | + if (!option) return null; | |
| 341 | 346 | const textContent = option.componentOptions.children.reduce((str, child) => str + (child.text || ''), ''); |
| 342 | 347 | const label = option.componentOptions.propsData.label || textContent || ''; |
| 343 | 348 | return { |
| ... | ... | @@ -603,6 +608,12 @@ |
| 603 | 608 | }, |
| 604 | 609 | dropVisible(open){ |
| 605 | 610 | this.broadcast('Drop', open ? 'on-update-popper' : 'on-destroy-popper'); |
| 611 | + }, | |
| 612 | + selectOptions(){ | |
| 613 | + if (this.hasExpectedValue){ | |
| 614 | + this.values = this.values.map(this.getOptionData); | |
| 615 | + this.hasExpectedValue = false; | |
| 616 | + } | |
| 606 | 617 | } |
| 607 | 618 | } |
| 608 | 619 | }; | ... | ... |