ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
v-model とは
Vue.js の v-model は、フォーム入力要素と Vue インスタンスのデータプロパティを双方向にバインドするディレクティブです。ユーザーが入力を変えれば data が、data を更新すれば入力欄が、それぞれ自動更新されます。
これは内部的には 「value 属性のバインド」+「input イベントのリスナー」のシンタックスシュガーです:
基本の使い方
入力中: {{ message }}
入力するたびに {{ message }} が即座に反映されます。
修飾子 (Modifiers)
| 修飾子 | 動作 | 用途 |
|---|---|---|
.lazy | input ではなく change イベントで同期 | 確定時のみ更新したい(IME 対応) |
.number | 入力値を Number にキャスト | 数値入力欄 |
.trim | 前後の空白を除去 | ユーザー名・メール等 |
checkbox / radio / select との連携
computed と組み合わせる
v-model だけで完結しない加工処理は computed や watch と組み合わせます:
createApp({
data() {
return { firstName: '', lastName: '' }
},
computed: {
fullName() {
return `${this.firstName} ${this.lastName}`.trim();
}
},
watch: {
fullName(newVal) {
console.log('変更:', newVal);
}
}
}).mount('#app');
computed プロパティに v-model する(setter)
computed は通常読み取り専用ですが、getter/setter を定義すれば v-model にも使えます:
computed: {
fullName: {
get() {
return `${this.firstName} ${this.lastName}`;
},
set(value) {
const parts = value.split(' ');
this.firstName = parts[0];
this.lastName = parts[1] ?? '';
}
}
}
カスタムコンポーネントでの v-model
Vue 3 (modelValue / update:modelValue)
// MyInput.vue
// 親側
Vue 3: 複数の v-model
Vue 2 (value / input)
// MyInput.vue (Vue 2)
IME (日本語入力) で困る話
デフォルトの v-model は input イベントで同期するため、IME 変換中の未確定文字も data に反映されてしまいます。検索ボックスなどで「タイピング中に都度 API を叩いて重い」問題の原因です:
よくあるトラブル
| 症状 | 原因 | 対処 |
|---|---|---|
| 入力が反映されない | data() に message を定義していない | 必ず data に初期値を宣言 |
| v-model.number で空入力時 NaN | 空文字を Number キャスト | v-model だけにして手動 parseInt |
| v-model.lazy で送信ボタンを押しても古い値 | change が発火していない | 送信前に明示的に blur |
| カスタムコンポで v-model 効かない | props/emit 名が違う | Vue 3 は modelValue / update:modelValue |
FAQ
Q: v-bind と v-model の違い
A: v-bind は片方向(data → DOM のみ)、v-model は双方向。
Q: v-model のままで textarea や contenteditable に使える?
A: textarea は v-model 可。contenteditable は標準サポートなしで、自前で input イベントを拾う必要があります。
Q: ref とどっちを使うべき?
A: Composition API の ref/reactive + v-model はそのまま動きます。Options API の data() と同じ感覚で使えます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- インストール(ファイルのダウンロード)
- npmを使用したプロジェクトの作成(mac)
- for 繰り返し処理
- ifの条件分岐とtemplateを用いたグループ化
- on:click クリック時のイベント処理
- modelとdata フォーム入力値とDOMへの即時反映
- computed(算出プロパティ)と使い方とdataとの違い
- ライフサイクルフック(created / mounted / updated / destroyedの使い方)
- $nextTickの使い方(ライフサイクルフック)
- メソッドの定義方法
- エラー一覧
- ルーティング設定
- aリンクの貼り方と動的URLの作成
- Mixinを利用した共通処理の記述方法
- v-bindによるデータ連携
- ヘッダー/フッターの共通コンポーネント
- ナビゲーションの現在ページをハイライトする方法
- 画面サイズの取得方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?