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
|
|