问题背景
我这边的场景是用户输入了内容之后,如果可以查询到数据,然后用户可以选择查询到的数据。如果查询不到数据,那么就使用用户输入的数据。
因为开启了 show-search ,就会去用你输入的匹配下了选项中的内容,如果没查到,就会返回空
我查看了源代码,现在是在失去焦点是,会自动清空searchText.
在触发blur事件前会触发search事件,并返回一个空值,1.4之前是没有这个机制的
论坛方案查找过程 发现这个问题还没有人修复,也没有具体的备用方案
select组件 search事件在触发blur事件之前会返回空值 · Issue #2262 · vueComponent/ant-design-vue · GitHub
解决方案
onSearch(e) {
if (e) {
this.searchInputValue = e
}
},
onBlur() {
if (this.searchInputValue) {
this.$emit('change', this.searchInputValue)
}
},
只需要借助两个事件,加一个缓存变量; 在置空前保存下来即可,失焦赋值
然后在onChang事件里 把searchInputValue 置空,不能影响原有的逻辑
onChange(e = '') {
this.searchInputValue = ''
let val
if (Object.keys(e).includes('target')) {
val = e.target.value
} else {
val = e
}
this.$emit('change', val)
this.$emit('input', val)
}