【发布时间】:2020-09-18 02:28:59
【问题描述】:
鉴于这个附加了全局事件监听器的 Vue 组件:
var app = new Vue({
data: {
foo: 0;
},
methods: {
handle: function(e) {
this.foo = 1; // this refers to handler, not app
}
},
mounted: function() {
window.addEventListener("keypress", this.handle);
}
});
为了更新组件状态,从事件处理程序中引用 this 的正确方法是什么?或者,有没有更好的方法在整个 window 上设置事件处理程序?
【问题讨论】:
-
其实
this绑定到vue实例 -
@Ifaruki 我相信你是对的,我对
this的假设是完全错误的!如果您将此添加为答案,我会接受它,因为它是正确的。 -
@YuvalAdam 我不明白这个问题,因为我重新创建了这个小应用程序,它工作正常
-
你试过这样挂载吗:function() { var ctx=this; window.addEventListener("keypress", ctx.handle); }
标签: javascript vue.js vue-component