Browse Source

Autocomplete: fix suggestions data bug (#11323)

hetech 7 years ago
parent
commit
2445a7bc00
1 changed files with 12 additions and 5 deletions
  1. 12 5
      packages/autocomplete/src/autocomplete.vue

+ 12 - 5
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);
       });