方法和數據值無法訪問keydown listener Vue js

我的掛載函數中有以下代碼:

 mounted () {
    document.addEventListener('keydown', function (e) {
      switch (e.keyCode) {
        case 37 :
          alert(this.indexPictures)
          break
      }
    })
  }

我的數據值:

  data: function () {
    return {
      indexPictures: this.index,
    }
  },

我的結果:未定義

我不知道為什么,但我無法在數據函數中獲取值,這是同一個問題,從方法訪問。我的結果:不是函數

你有什么主意嗎?

? 最佳回答:

不確定this.index是什么,但我會假設它是一個道具或類似的東西。

嘗試從addEventListener中刪除關鍵字function

 mounted () {
    document.addEventListener('keydown', (e)=> {
      switch (e.keyCode) {
        case 37 :
          alert(this.indexPictures)
          break
      }
    })
  }

它與問題沒有特別的關系,但也從數據中刪除function關鍵字:

data() {
    return {
      indexPictures: this.index,
    }
  },

關鍵字function更改范圍,意味著this綁定到函數本身(在您的例子中是回調)。當您使用箭頭函數this時,關鍵字將與mounted中的關鍵字相同,這意味著您可以訪問數據。

從MDN文檔:

使用Arrow函數的最大好處可能是使用setTimeout()和EventTarget.prototype.addEventListener()等方法,這些方法通常需要某種閉包、調用、應用或綁定來確保函數在正確的范圍內執行。

請記住,如果這是組件的一部分,最好在銷毀組件之前刪除該偵聽器。

主站蜘蛛池模板: 精品国产一区二区三区在线观看 | 一区二区三区在线观看| 免费一本色道久久一区| av在线亚洲欧洲日产一区二区| 日韩一区二区超清视频| 精品国产伦一区二区三区在线观看 | 国产综合一区二区| 免费看一区二区三区四区| 无码人妻少妇色欲AV一区二区| 精品无码国产一区二区三区51安| 国产一区二区三区内射高清| 精品国产一区二区三区| 无码国产精品一区二区免费式直播| 精品一区二区三区在线视频观看| 无码福利一区二区三区| 国产av熟女一区二区三区| 久久精品无码一区二区app| 日本一区二区三区免费高清在线 | 97se色综合一区二区二区| 国产日韩AV免费无码一区二区三区| 国产成人一区二区三区| 无码一区二区三区免费视频| 骚片AV蜜桃精品一区| 国模吧一区二区三区| 人妻精品无码一区二区三区 | 丰满岳乱妇一区二区三区| 后入内射国产一区二区| 福利片福利一区二区三区| 国产成人久久精品麻豆一区| 中文字幕亚洲乱码熟女一区二区| 无码人妻一区二区三区在线| 国产福利精品一区二区| 久久久久人妻一区二区三区| 国产精品福利一区二区久久| 精品国产高清自在线一区二区三区| 国产大秀视频一区二区三区| 丝袜人妻一区二区三区网站| 精品国产一区二区三区久久久狼 | 日本一区二区三区在线视频观看免费 | 国产激情一区二区三区 | 久久精品国产一区二区三|