在做开发时候,有三个input,他们的value要影响最后一个td的值,刚开始使用的keyup事件,无奈调用后台的接口太频繁;肯定不对,后来自己想了想,就是在获取了value了,延迟在调接口,于是写了个延迟器;
html:
<input type="text" @keyup="delay()" v-model="userData">
js:
delay(){
let self = this; // this 指的是当前组件
clearTimeout(timeId);
var timeId = setTimeout(function(){
console.log(self.userData); // 这里面就写ajax;
},1000)
},
后来,我同事说函数有个节流和防抖,看了好久,尴尬,不是很懂,就暂时这样写吧,以后在优化哈;
于是突然想到,这个这么常用的功能,尤大大不可能不在vue里面封转吧,于是就文档找;vue1 是有 debounce过滤器这个属性的;可是在vue2.0后就被抛弃了;看了个 lodash;又尴尬了,都不晓得是什么鬼?
https://www.lodashjs.com/ 然后推荐用这个;
html:
<input type="text" @keyup="add()" v-model="userData">
js:
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.js"></script>
add: _.debounce(function () {
console.log(this.userData);
}, 1000),
更加方便快捷