new Vue({
el: '#app',
data() {
return {
}
},
directives: {
debounce: {
inserted: function (el, binding) {
// binding.arg 传进来的参数 可以
let s = (binding.arg * 1) || 1000
let timer
el.addEventListener('click', () => {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(() => {
binding.value()
}, s)
})
},
}
},
methods: {
logger() {
console.log('12')
}
}
})
<div id="app">
<button v-debounce:3000="logger">测试</button>
</div>