Javascript 从事件处理程序更改globale变量时出现问题
我正在ionic4中构建一个简单的应用程序,它有一个按钮。按下按钮时,应显示加速计α值。我的问题是,事件列表器调用的eventhandler不会更改globale变量(我认为)Javascript 从事件处理程序更改globale变量时出现问题,javascript,html,angular,ionic-framework,ionic4,Javascript,Html,Angular,Ionic Framework,Ionic4,我正在ionic4中构建一个简单的应用程序,它有一个按钮。按下按钮时,应显示加速计α值。我的问题是,事件列表器调用的eventhandler不会更改globale变量(我认为) 显示传感器数据 传感器数据为{{sensordata}} 我猜“这”可能不是你想象的那样。你试过改变功能吗 clicked() { window.addEventListener("deviceorientation", this.handleOrientation, true); } 到 我认为,描述导致您得出全局
显示传感器数据
传感器数据为{{sensordata}}
我猜“这”可能不是你想象的那样。你试过改变功能吗
clicked() {
window.addEventListener("deviceorientation", this.handleOrientation, true);
}
到
我认为,描述导致您得出全局变量未更改的结论的调试步骤会很有帮助。如果您可以将
handleOrientation
附加到(单击)
event?,本质上是(单击)=“handleOrientation($event)”,为什么还要添加事件侦听器
也事件侦听器中的此
是对事件附加到的html按钮的引用,而不是组件类,当元素可以访问组件类中指定的任何函数时,您无需附加事件侦听器。@Bargros它需要持续更新值每当您单击按钮handleOrientation
时,将触发并更新值,所以我不明白你所说的持续更新值是什么意思?。您还意识到,clicked
只会一次又一次地创建事件侦听器,它的功能不是更新值,而只是不断地重新连接事件侦听器。clicked()
和clicked=()=>
是同一回事,但声明方式不同。否。区别在于“this”指针,它在这两种情况下有所不同。我看不出两者之间有任何区别,但我已经说明了当您了解javascript时的一些内容。看看这个例子,仔细研究一下,看看函数的声明方式是非常重要的:我也不明白为什么你会对这个感到困惑。你写的东西和对原始问题的评论完全一样。。。您还指出“this”指针可能有问题。
clicked() {
window.addEventListener("deviceorientation", this.handleOrientation, true);
}
clicked = () => {
window.addEventListener("deviceorientation", this.handleOrientation, true);
}