解决el-autocomplete使用clearable后,自动提示失效

2,299 阅读1分钟

在一次项目中,使用到了elementUI中的el-autocomplete组件,可以在输入时自动弹出提示框,与elementUI示例不同的是,我在项目中需要使用clearable功能,就是清除用户输入

以下是初始代码:

<el-autocomplete
    :placeholder="请输入"
    v-model="searchVal"
    clearable
    :fetch-suggestions="querySearch"
    @select="selectSearch"
>
</el-autocomplete>

但此时问题出现了,当点击清除按钮后,再次在输入框中输入内容el-autocomplete已经不自动提示了

el-autocomplete示例中也没有相对应说明,于是翻看了源码,发现在autocomplete.vue文件中有如下方法:

handleFocus(event) {
    this.activated = true;
    this.$emit('focus', event);
    if (this.triggerOnFocus) {
        this.debouncedGetData(this.value);
    }
},
handleClear() {
    this.activated = false;
    this.$emit('clear');
},

于是,尝试着更改this.activated值,项目代码更改如下:

<el-autocomplete
    ref="myAutocomplete"
    :placeholder="请输入"
    v-model="searchVal"
    clearable
    :fetch-suggestions="querySearch"
    @select="selectSearch"
    @clear="clearSearch"
>
</el-autocomplete>
clearSearch() {
    this.$refs.myAutocomplete.handleFocus()
}

结果验证是OK的✌

关键点:手动更改this.activated值为true

总结:再次验证解决问题还需要找到根源😀