我想使用mousedown
,mousemove
和mouseup
事件来实现可拖动的线。
在我的第一次尝试中,我尝试使用箭头函数类属性:https ://codesandbox.io/s/example-1-15psm?fontsize=14&hidenavigation=1&theme=dark
但是position
in的属性Test.vue
似乎是非反应性的。不确定,但我猜是因为这个Vue 限制:
不要在选项属性或回调上使用箭头函数,例如
created: () => console.log(this.a)
orvm.$watch('a', newValue => this.myMethod())
。由于箭头函数没有this
,this
将被视为任何其他变量并通过父作用域进行词法查找直到找到,通常会导致诸如 UncaughtTypeError: Cannot read property of undefined
或Uncaught TypeError: this.myMethod is not a function
.
在我的第二次尝试中,我尝试使用标准类方法: https ://codesandbox.io/s/example-2-t7beu?fontsize=14&hidenavigation=1&theme=dark
它可以工作,除非因为绑定的函数onMouseMove
和onMouseUp
inTest.vue
是匿名的,我不能用removeEventListener
.
那么,在 Vue 类组件中使用addEventListener
and的正确方法是什么?removeEventListener