问题描述
搜索输入框中,只当用户停止输入后,才进行后续的操作,比如发起Http请求等。
学过电子电路的同学应该知道按键防抖。原理是一样的:就是说当调用动作n毫秒后,才会执行该动作,若在这n毫秒内又调用此动作则将重新计算执行时间。本文将分别探讨在angular.js和vue.js中如何实现对用户输入的防抖。
angular.js中解决方案
调用方法,在需要使用该功能的controller/directive中注入debounce,也要注入$watch,然后:
大功告成!
Vue.js中的解决方案
return function (...args) {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
func.apply(this,args)
},delay)
}
}
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
func.apply(this,args)
},delay)
}
}
然后在需要使用的组件中引入debounce,并且在created生命周期内调用:
{
this.getDatas(newSearchText)
},200))
}
大功告成!