プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Vue.js
  • 【Vue.js】「v-on(イベントハンドリング)」、「キー修飾子」について
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Vue.js】「v-on(イベントハンドリング)」、「キー修飾子」について

07.08

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

イベントハンドラとは?

イベントに紐づける処理内容のことです。

ハンドルとは?

イベントと、イベントハンドラを紐づけることです。

v-onディレクティブ

Vue.jsでは、紐づけのためには「v-onディレクティブ」を使います。

v-onディレクティブの注意点

v-onディレクティブでイベントハンドラ登録ができるのはelオプションで指定したコンポーネントのスコープ内にある要素に限られます。(要は<div id="app"></div>だったり、ブラウザのウインドウ自体に発生するイベントはv-onでは検知できません。)

具体的にはページが読み込まれた際に発生するloadイベントやウインドウサイズが変更した際に発生するresizeイベント、ページをスクロールさせた際に発生するscrollイベント等が該当します。

コンポーネントのスコープ外のイベントハンドリングの実装

createdまたはmountedにaddEventListenerを実装して、beforeDestroyでremoveEventListenerを実装してイベントリスナーを削除すると良いでしょう。

Vue.jsでのイベントハンドラの種類

メソッドイベントハンドラ

Vueインスタンスのmethodsオプションに定義されているメソッド名を指定します。

インラインメソッドハンドラ

ディレクティブの値に直接JavaScriptの式を書き込むことができます。短い式の場合は活用するようにしましょう。

イベントハンドラが受け取るオブジェクト

$event

「イベントオブジェクト」を表す変数で、イベントの発生元を表すオブジェクト(resizeイベントであればwindowオブジェクト)のことです。

イベントオブジェクトの取得方法

下記のようにv-onで呼び出す関数の引数にeventという引数を渡してあげます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  <div id="app">
    <p v-on:click="click">clickしてください。</p>
  </div>
 
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      methods: {
        click: function (event) {
          console.log(event);
        }
      }
    })
  </script>

キー修飾子

v-onのイベントkeydown、keyupで使える修飾子のことです。

例

例えば下記のサンプルであれば、keyupイベントに対して、「enter」という修飾子を付加することによってテキストボックスにenterキーを入力したタイミングのみキーアップイベントが動作するようになります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  <div id="app">
    <input type="text" v-on:keyup.enter="click">
  </div>
 
  <script>
    new Vue({
      el: "#app",
      data: {
      },
      methods: {
        click: function () {
          console.log('キーアップ');
        }
      }
    })
  </script>

複数修飾子を適用する。

下記のようにしてつなげる事もできます。

1
2
3
  <div id="app">
    <input type="text" v-on:keyup.enter.space="click">
  </div>

スポンサーリンク
  • 2018 07.08
  • miyabisan2
  • コメントを書く
  • Vue.js
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2018 07.08

    【Vue.js】Vue.jsの設計思想(リアクティブシステム、データバインディング機能、仮想DOMなど)

  2. 2020 05.30

    【Vue.js】v-onのイベント修飾子(.stop、.prevent、.native、.sync)について

  3. 2018 07.16

    【Vue.js】「コンポーネントの親子関係」について

  4. 2020 06.07

    【Vue.js】「カスタムディレクティブ」について

  5. 2020 06.06

    【Vue.js】Vue CLIで生成したファイルの意味を理解する

  6. 2020 05.30

    【Vue.js】「v-bind」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【CSS】「Flexbox」の「flexコンテナー」、…

【Nuxt.js】ディレクトリ構成(nuxt.conf…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • WebRTC
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー