// driectives/debounce
const debounce = (fn, delay) => {
let timer = null
return (...rest) => {
clearTimeout(timer)
timer = setTimeout(() => {
fn.apply(null, rest)
}, delay)
}
}
let callback = function () { }
export default {
bind(el, binding, vnode) {
el.value = binding.value
callback = debounce((e) => {
vnode.context[binding.expression] = e.target.value
console.log('触发')
}, 500)
el.addEventListener('input', callback)
},
inserted() { },
unbind(el) {
el.removeEventListener('input', callback)
}
}
// main.js
import debounce from "./driectives/debounce"
Vue.directive('debounce', debounce)