ディレクティブ(v-bind, v-on)の動的引数 [Vue.js]

Vue.js The Progressive JavaScript Framework

Vue.jsのv-bindディレクティブを使用すると、HTML要素の属性に値をバインドすることができます。

v-bindディレクティブでHTML要素の属性にバインドする [Vue.js]
本記事では、Vue.jsのv-bindディレクティブについて紹介します。 v-bindディレクティブ HTMLの要素はcla...

v-bindディレクティブでは、「v-bind:」に続けて属性名を指定することで、属性に値(または式)をバインドすることができます。

v-bindディレクティブの通常の書式では属性名をHTMLに記述しますが、属性名はJavaScriptの式から設定することもできます。

v-bindディレクティブと並んでよく使用するディレクティブにv-onディレクティブがあります。
v-onディレクティブを使用すると、HTML要素のイベントにメソッド(または式)をバインドすることができます。

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

v-onディレクティブでは、「v-on:」に続けてイベント名を指定することで、イベントにメソッド(または式)をバインドすることができます。

v-onディレクティブの通常の書式ではイベント名をHTMLに記述しますが、イベント名はJavaScriptの式から設定することもできます。

そこで今回は、v-bindディレクティブで指定する属性名や、v-onディレクティブで指定するイベント名を動的に指定する方法について紹介します。

ディレクティブの動的引数

v-bindディレクティブの属性名、v-onディレクティブのイベント名は、静的に指定する場合は以下のように記述します。

上記のコードでは、v-bindディレクティブの属性名に「href」、v-onディレクティブのイベント名に「click」を指定しています。
この属性名とイベント名は[]で囲んで指定(ブラケットで指定)することにより、JavaScriptの式の値から動的に生成することができます。
これを「動的引数」と言います。

v-bindディレクティブの動的引数の指定例

以下にv-bindディレクティブの属性名を動的引数によって指定する例を示します。

サンプルコード

ここでは、a要素(タグ)の属性名を動的引数によって指定する例を示します。

HTML

JavaScript

上記の例ではdataオプションに定義した属性名(attribute)に「href」を指定しているので、a要素のhref属性にurlの値がバインドされます。

出力されるHTML

上記のサンプルコードを実行(ブラウザーで表示)すると以下のHTMLが出力されます。

v-onディレクティブの動的引数の指定例

以下にv-onディレクティブのイベント名を動的引数によって指定する例を示します。

サンプルコード

ここでは、button要素(タグ)のイベント名を動的引数によって指定する例を示します。

HTML

JavaScript

上記の例ではdataオプションに定義したイベント名(event)に「click」を指定しているので、button要素のclickイベントにonClickメソッドがバインドされます。

動的引数利用時の注意点

v-bindディレクティブ、またはv-onディレクティブで使用する動的引数の名前に、大文字が含まれる場合は注意が必要です。

Vue.jsの公式ドキュメントには以下の記載があります。

in-DOM テンプレート (すなわち、HTML ファイルに直接書かれるテンプレート) を使う場合、ブラウザが強制的に属性名を小文字にするため、キー名を大文字にするのは避けるべきです:

上記の例の「someAttr」を動的引数として利用する場合は、JavaScriptに定義するdataオプションのプロパティ名を「someattr」にする必要があります。

Vue.js 入門 Tips 一覧