首页 > 解决方案 > 为什么我在 vue 中传递回调时没有错过上下文?

问题描述

  data: () => ({
    showCurrenciesPopup: false,
  }),
  methods: {
    closeCurrenciesPopup() {
      this.showCurrenciesPopup = false;
    },
    escapeKeyListener(event: any) {
      if (event.keyCode === 27) {
        this.closeCurrenciesPopup();
      }
    },
  },
  created() {
    document.addEventListener('keyup', this.escapeKeyListener);
  },

似乎上下文应该在这里丢失document.addEventListener('keyup', this.escapeKeyListener),但不是!没有任何错误,一切正常。有人知道发生了什么吗?

标签: javascriptvue.jsvuejs2

解决方案


像这样使用 Function 的绑定方法:

created() {
    document.addEventListener('keyup', this.escapeKeyListener.bind(this));
},

在此处输入图像描述

在此处输入图像描述

这些是vue的源码,你看懂了吗?


推荐阅读