input数据输入时用watch监听的
1. 输入空格不做处理
2. 清除之前定时器
3. 创建防抖定时器
a. 是否有值
b. 调用接口
代码段:
data() {
return {
//输入内容
searchVal:'',
//输入框防抖用的定时器
debounceTimer:'',
}
},
watch: {
searchVal(newVal,oldVal){
//添加空格不做处理
if(newVal.trim() == oldVal.trim()) return;
// 输入框防抖
clearTimeout(this.debounceTimer);
// 每次进来的时候都将之前的清除掉,如果还没到毫秒的时候就将之前的清除掉,这样就不会触发之前setTimeout绑定的事件, 如果超过毫秒,之前的事件就会被触发下次进来的时候同样清除之前的timer
this.debounceTimer = setTimeout(()=>{
//输入框没值了,清空搜索框条件数据
if(!newVal){
// 设置为初始状态
=======(没有值相关操作) ======
return;
}
====== 有值操作 (调取接口等等)======
},500) //几毫秒进行
}
},
判断接口是否有数据?没数据展示‘没有找到数据呦!’
问题: 第一次请求接口时,有延迟效果,会在500毫秒之后才会调用接口返回数据,第一次数据为空,但是不展示没数据内容。
所以不能直接判断数据是否为空。
解决: 在接口请求后用字段展示。
例如: 接口请求.then(res=>{
this.hasData = !!res.data;
})