forked from drone/command-center-dashboard

罗广辉
2025-04-21 2800fa4f32f3900509cb4d6eefaf2bfaf54efdd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const hold = {
    mounted(el, binding) {
        let timer = null;
        el.startHold = () => {
            if (!timer) {
                timer = setInterval(() => {
                    binding.value();
                }, 50);
            }
        };
 
        el.stopHold = () => {
            clearInterval(timer);
            timer = null;
        };
 
        el.addEventListener("mousedown", el.startHold);
        el.addEventListener("mouseup", el.stopHold);
        el.addEventListener("mouseleave", el.stopHold);
        el.addEventListener("touchstart", el.startHold); // 适配触摸屏
        el.addEventListener("touchend", el.stopHold);
    },
 
    // 绑定元素的父组件卸载前调用
    beforeUnmount(el, binding) {
        el.removeEventListener("mousedown", el.startHold);
        el.removeEventListener("mouseup", el.stopHold);
        el.removeEventListener("mouseleave", el.stopHold);
        el.removeEventListener("touchstart", el.startHold);
        el.removeEventListener("touchend", el.stopHold);
    },
}
 
export default hold