フォーム入力バインディング
基本的な使い方
form の input 要素 と textarea 要素で双方向 (two-way) データバインディングを作成するには、v-model
ディレクティブを使用することができます。それは、自動的に入力されたタイプに基づいて要素を更新するための正しい方法を選択します。わずかな魔法とはいえ、v-model
は本質的にユーザーの入力イベントにおいてデータを更新するための糖衣構文 (syntax sugar) で、そのうえ、いくつかのエッジケースに対して特別な配慮が必要です。
Text
<span>Message is: {{ message }}</span> |
TextArea
<span>Multiline message is:</span> |
{{ message }}
Checkbox
単体のチェックボックスは、boolean 値です:
<input type="checkbox" id="checkbox" v-model="checked"> |
複数のチェックボックスは、同じ配列にバウンドします:
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames"> |
new Vue({ |
Checked names: {{ checkedNames | json }}
Radio
<input type="radio" id="one" value="One" v-model="picked"> |
Picked: {{ picked }}
Select
単体の選択:
<select v-model="selected"> |
複数の選択 (配列にバウンド):
<select v-model="selected" multiple> |
Selected: {{ selected | json }}
動的オプションは v-for
でレンダリングできます:
<select v-model="selected"> |
new Vue({ |
値のバインディング
radio、checkbox、そして select オプションは、v-model
バインディングの値は通常静的文字列 (または、チェックボックスには boolean )を指定します:
<!-- チェックされたとき、`picked` は文字列"a"になります --> |
しかし、時どき、私達は、Vue インスタンスで動的プロパティに値をバインドしたいかもしれません。私達はそれを達成するために v-bind
を使用することができます。 ほかに、v-bind
の使用は、私達に文字列ではない値に input 値をバインドします。
Checkbox
<input |
// チェックしたとき: |
Radio
<input type="radio" v-model="pick" v-bind:value="a"> |
// チェックしたとき: |
Select Options
<select v-model="selected"> |
// 選択したとき |
パラメータ属性
lazy
デフォルトでは、v-model
は各 input
イベント後に、データと入力を同期します。change
イベント後、同期するための振舞いを変更するために、lazy
属性を追加します:
<!-- "input" の代わりに "change" 後に同期します --> |
number
ユーザーの入力において自動的に数値として永続化する場合、v-model
を管理された input の値に対して、number
属性を追加することができます。
<input v-model="age" number> |
debounce
debounce
パラメータは、入力値が Model に同期される前の各キーストローク後の最小遅延の設定を許可します。これは、例えば、先行入力自動補完向けに Ajax リクエストを作成するような、各更新時に高価な操作を実行しているときには便利です。
<input v-model="msg" debounce="500"> |
debounce
パラメータはユーザーの入力イベントをデバウンスしないことに注意してください: それは基礎となるデータに “書き込み” 操作をデバウンスします。そのためdebounce
を使用するときデータ変に対して反応するために vm.$watch()
を使用する必要があります。本物の DOM イベントをデバウンスするためには、debounce filter を使います。