1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Vue.js編】v-bindとv-modelの違いを学ぶ

Posted at

はじめに

はじめまして、学生エンジニアの@huyunokiです。

今回は一見似ているけれど役割が全く違う v-bindv-model の違いを明確にし、データとDOM(画面)を直感的に繋ぐVueの基本的な構造を一気に解説します。

1. コアとなるデータバインディングの理解

Vueの使いやすさの核心は、「データ」と「DOM」を自動で同期する「データバインディング」にあります。これを実現するのが v-bindv-model です。

1-1. v-bind: 一方向バインディング

v-bind はデータを「コード (data) → 画面 (DOM)」の一方向で結びつけます。

役割 データの表示(属性への設定)
特徴 dataの変更は画面に反映されるが、画面上のユーザー入力は data に戻らない(読む専用)。
構文 v-bind:属性名="データ名" (短縮形: :属性名="データ名")
コード例 <input type="text" v-bind:value="inputValBind"/>
動作 inputValBind の初期値 ('入力してください(bind)') が表示される。ユーザーが入力しても inputValBind は変わらない。

テンプレート (<template>)

<input type="text" v-bind:value="inputValBind"/>

スクリプト (<script>)

data: function(){
  return {
    inputValBind:'入力してください(bind)',
  }
}

1-2. v-model: 双方向バインディング

v-model はデータを「コード (data) ⇄ 画面 (DOM)」の双方向で結びつけます。

役割 フォーム要素とデータの同期
特徴 dataの変更は画面に反映され、ユーザー入力も即座に data に反映される(読み書き可能)。
構文 v-model="データ名"
コード例 <input type="text" v-model="inputValModel">
動作 ユーザーが入力するたびに inputValModel が更新され、他の場所の表示も即座に変わる。

テンプレート (<template>)

<input type="text" v-model="inputValModel">

スクリプト (<script>)

data: function(){
  return {
    inputValModel:'入力してください(model)',
  }
}

使い分け:一言でまとめると

  • v-bind: 値を表示したいとき(ボタンを無効化する:disabled、画像のURLを指定する:srcなど)。
  • v-model: ユーザーが入力した値をデータとして取得したいとき(<input>, <textarea>, <select>)。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?