v-onディレクティブに複数のイベントを一括指定する [Vue.js]

Vue.js The Progressive JavaScript Framework

ここではv-onディレクティブで、複数のイベントをまとめて一括で指定する方法について紹介します。

v-onディレクティブ

Vue.jsのv-onディレクティブを使用すると、HTMLテンプレートのDOM要素のイベントに処理をバインドすることができます。

v-onディレクティブでイベントの処理(メソッドや式)をバインドする [Vue.js]
本記事では、Vue.jsのv-onディレクティブについて紹介します。 v-onディレクティブ ユーザーからの操作を受け付ける...

v-onディレクティブでは、引数にclickやfocusなどのイベント名を指定します。
例えば、button要素のclickイベントで処理を行う場合は、次のようになります。

HTML

JavaScript

ここではv-onディレクティブで、methodsオプションに定義したメソッドをclickイベントにバインドしています。

上記の例のようにバインドするイベントが1つであれば特に問題ありませんが、バインドするイベントが複数ある場合は、すべてのイベントに対してv-onディレクティブでのバインドを記述する必要があります。

例えば以下のように、1つの要素に対して複数のイベントをバインドしている場合などです。

HTML

JavaScript

ここでは、input要素(テキストボックス)のfocusイベント、blurイベント、changeイベントの3つのイベントに対してそれぞれv-onディレクティブでmethodsオプションに定義したメソッドをバインドしています。

上記の方法では、バインドするイベントが多くなるとその度にv-onディレクティブを記述してイベントをバインドしなければなりません。

Vue.jsではこのように複数のイベントがある場合に1回のv-onディレクティブですべてのイベントをバインドするための記述方法が用意されています。

v-onディレクティブのオブジェクト記法

複数のイベントを1度のv-onディレクティブでバインドする場合は、オブジェクト形式のハッシュデータ({キー: 値, キー: 値…}形式のデータ)を指定します。

v-onディレクティブにオブジェクト形式で指定する例

以下に、上記のinput要素のfocusイベント、blurイベント、changeイベントの3つのイベントを指定する例を示します。

オブジェクト形式で指定する場合は、「v-on=”」に続けてオブジェクトを記述し、最後に「”」を記述してv-onディレクティブの記述を閉じます。
オブジェクトが持つプロパティのキーにイベント名、値に式(methodsオプションに定義したメソッドなど)を指定します。

v-onディレクティブにバインドするオブジェクトは、JavaScript側に記述することもできます。
以下に上記のinput要素のfocusイベント、blurイベント、changeイベントの3つのイベントを指定する例を示します。

HTML

JavaScript

上記の例では、dataオプションにイベントとメソッドをオブジェクト形式で定義した、textEventsプロパティをv-onディレクティブでバインドしています。
JavaScript(Vueインスタンス)側でオブジェクトを定義する場合は、イベントにバインドする値に式を指定しますので、methodsオプションに定義したメソッドを指定する場合にthis修飾子が必要になります。

Vue.js 入門 Tips 一覧