回答編集履歴

1

window.addEventListenerが正しく動かない理由を追記

2019/01/27 09:06

投稿

退会済みユーザー
test CHANGED
@@ -47,3 +47,43 @@
47
47
 
48
48
 
49
49
  最後に、それらを全てやってくれる、[vue-global-events](https://github.com/shentao/vue-global-events)というコンポーネントがあるので、これを使ってはどうでしょうか。
50
+
51
+
52
+
53
+
54
+
55
+ ### 追記 window.addEventListenerが正しく動かない理由
56
+
57
+
58
+
59
+ addEventListenerの関数内ではthisがwindowもしくはundefinedのどちらかになります。
60
+
61
+ これはjavascriptのthisの扱いを理解する必要があるのですが、
62
+
63
+ ここで説明するには長くなりますし、解説しているサイトはたくさんありますので、
64
+
65
+ そちらを検索して理解してください。
66
+
67
+
68
+
69
+ [JavaScript の this を理解する多分一番分かりやすい説明](https://qiita.com/takkyun/items/c6e2f2cf25327299cf03)を見るとわかりやすいかもしれません
70
+
71
+
72
+
73
+ 一番簡単ない解決は、以下のようにthisを変数に保存するのが一番簡単です。
74
+
75
+
76
+
77
+
78
+
79
+ ``` javascript
80
+
81
+ var self = this; // thisを変数に保存
82
+
83
+ window.addEventListener('keydown', function(e){
84
+
85
+ self.showNextContent(); // 保存したselfで関数を実行
86
+
87
+ });
88
+
89
+ ```