簡體   English   中英

將事件綁定到Vue.js中的窗口

[英]Binding events to window in Vue.js

我對Vue.js很陌生。 最近,我在一個組件中的窗口上附加/分離鍵盤事件遇到了問題。 這是我的方法:

created() {
  this.initHotkeys();
},

beforeDestroy() {
  this.discardListeners();
},

methods: {
  initHotkeys() {
    window.addEventListener('keyup', this.processHotkey.bind(this));
    window.addEventListener('keydown', this.removeDefaultBehavior.bind(this));
  },

  discardListeners() {
    window.removeEventListener('keyup', this.processHotkey.bind(this));
    window.removeEventListener('keydown', this.removeDefaultBehavior.bind(this));
  },

....

事件會附加並啟動,不會出現任何問題。 但是,當我切換組件時,事件仍然保持附加到窗口。 經過一堆嘗試,我發現如果我從所有回調中刪除.bind(this)部分,則事件將成功分離。

誰能解釋一下為什么會這樣?

先感謝您!

.bind(this)返回一個新函數。

this.processHotkey.bind(this) === this.processHotkey.bind(this)
// => false

這就是為什么刪除偵聽器不起作用的原因。 幸運的是,綁定是不必要的,因為組件方法已經綁定。

因此,將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM