在一次项目中,使用到了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