diff --git a/packages/autocomplete/src/autocomplete.vue b/packages/autocomplete/src/autocomplete.vue index 58d14830b..8f6b39849 100644 --- a/packages/autocomplete/src/autocomplete.vue +++ b/packages/autocomplete/src/autocomplete.vue @@ -122,7 +122,8 @@ activated: false, suggestions: [], loading: false, - highlightedIndex: -1 + highlightedIndex: -1, + suggestionDisabled: false }; }, computed: { @@ -150,19 +151,27 @@ }; }, getData(queryString) { + if (this.suggestionDisabled) { + return; + } this.loading = true; this.fetchSuggestions(queryString, (suggestions) => { this.loading = false; + if (this.suggestionDisabled) { + return; + } if (Array.isArray(suggestions)) { this.suggestions = suggestions; } else { - console.error('autocomplete suggestions must be an array'); + console.error('[Element Error][Autocomplete]autocomplete suggestions must be an array'); } }); }, handleChange(value) { this.$emit('input', value); + this.suggestionDisabled = false; if (!this.triggerOnFocus && !value) { + this.suggestionDisabled = true; this.suggestions = []; return; } @@ -228,9 +237,7 @@ } }, mounted() { - this.debouncedGetData = debounce(this.debounce, (val) => { - this.getData(val); - }); + this.debouncedGetData = debounce(this.debounce, this.getData); this.$on('item-click', item => { this.select(item); });