Javascript 与vue和addEventListener中的数据或方法通信
我无法使用此代码与我的数据或方法通信Javascript 与vue和addEventListener中的数据或方法通信,javascript,vue.js,Javascript,Vue.js,我无法使用此代码与我的数据或方法通信 created() { document.addEventListener( 'touchstart', function( e ) { this.myData = e.changedTouches[ 0 ].screenY } } 我猜这是因为函数的作用域。这在函数内部不起作用,但是我如何与数据通信或激活事件侦听器函数之外的任何方法呢?你是对的,这是因为回调中的绑定没有指向vue实例 要解决此问题,请在指向vue实例的已创建挂钩中定义变量
created() {
document.addEventListener( 'touchstart', function( e ) {
this.myData = e.changedTouches[ 0 ].screenY
}
}
我猜这是因为函数的作用域。这在函数内部不起作用,但是我如何与数据通信或激活事件侦听器函数之外的任何方法呢?你是对的,这是因为回调中的
绑定没有指向vue实例
要解决此问题,请在指向vue实例的已创建挂钩中定义变量var self=this
,并在回调中使用self
引用数据属性
created() {
var self = this;
document.addEventListener( 'touchstart', function( e ) {
self.myData = e.changedTouches[ 0 ].screenY
})
}
现在,由于回调函数在变量self
上有一个闭包,因此它在被调用时引用vue实例
另一种选择是,您可以使用箭头函数,按如下方式按词汇绑定此
created() {
document.addEventListener( 'touchstart', ( e ) => {
this.myData = e.changedTouches[ 0 ].screenY
})
}
在这之后我觉得很傻。。。实际上,我尝试将其传递到函数中,出现了各种各样的错误,等等。。。当我可以在外面读取变量时。谢谢你的帮助!哦,哇,箭头功能实际上更好,我不知道它可以这样使用。美好的很难找到解决方案,谢谢!!使用箭头函数解决了我的问题