どんな記事?
Vue.jsでのデータバインディングを理解しよう!
データバインディングとは
データバインディングとは、データと描画を同期する仕組み。
テキストのバインディング
"Mustache"構文(二重中かっこ)を利用した形が基本です。
<span> Message: {{ msg }}</span>
こうすると{{ msg }}
の部分が、対応するオブジェクトのmsg
プロパティの値に置き換えられます。
HTMLのバインディング
v-html
ディレクティブを使用すると、HTML文をバインディングできます。
(ディレクティブとは、DOM要素に対して何かを実行することをライブラリに伝達する、マークアップ中の特別なトークン)
<p v-html="text"></p>
data: function() {
retrun {
text: 'Hello!'
}
}
Hello!
p
のコンテンツはtext
プロパティの値に置き換えられ、プレーンなHTMLとして解釈されます。
属性値のバインディング
v-bind
を使用すると、HTML属性値をバインディングすることができます。
<div v-bind:class="{ active: isActive }"></div>
data: {
isActive: true
}
以上のようにすると、HTMLはこのように描画されます。
<div class="active"></div>
isActive
がfalse
になると、active
属性値は描画されなくなります。
テンプレートをより見やすくする為に、直接オブジェクトを指定してバインディングする方法もあります。
<div v-bind:style="styleObject"></div>
data: {
styleObject: {
color: 'red',
fontSize: '13px'
}
}
<div style="color: red; fontSize: 13px;"></div>
「:」の意味
テンプレート内のv-bind
の後ろについている:
は、引数を意味しています。
<a v-bind:href="url"></a>
上記の例でhref
は、v-bind
ディレクティブに、url
の値と要素のhref
属性をバインドするように伝える引数です。
省略記法
v-bind
に対しては省略記法が提供されています。
v-bind
を書かずに:
のみにしても大丈夫なんですね。
<a v-bind:href="url"></a>
<a :href="url"></a>
参考
Vue.js公式
Vue.js データバインディングとはなにか説明します
データをHTMLコードとして出力するには v-html ディレクティブを使う