Vue.jsでグローバルイベントを処理する
Vueのイベント処理方法は素晴らしいです。 少し投げるだけ @eventName="eventHandler"
要素の属性を1日と呼びます。 ただし、このような便利さは、デフォルトではグローバルイベントには拡張されません。 実証済みの方法を使用する必要があります addEventListener
. または、 DamianDuliszおよびEduardoSan MartinMoroteによって提供されたこの小さな便利な小さなVueコンポーネントを使用することもできます。
インストール
# Yarn
$ yarn vue-global-events
# NPM
$ npm install vue-global-events --save
使用法
次に、コンポーネントをにインストールします main.js
.
main.js
import Vue from 'vue';
import App from './App.vue';
import GlobalEvents from 'vue-global-events';
// You can also import it individually per-component.
Vue.component(GlobalEvents);
new Vue({
el: '#app',
render: h => h(App)
});
これで、Vueの明確でシンプルな構文を使用しながら、任意のコンポーネントからあらゆる種類のグローバルイベントを聞くことができます。 イベントの登録解除について心配する必要はありません。 使用することもできます v-if
ハンドラーを有効または無効にするための関連するディレクティブ。
<template>
<div>
<GlobalEvents
@blur="handleAppBlur"
@focus="handleAppFocus"
@keydown.ctrl.tab="handleTabChange"
></GlobalEvents>
<!-- The rest of your component -->
</div>
</template>
<script>
export default {
methods: {
handleAppFocus() {
console.log(`I've been focused!`);
},
handleAppBlur() {
console.log(`I'm feeling a bit blurry...`);
},
handleTabChange() {
console.log(`**Doing Tab Changy Things**`);
}
}
}
</script>