Vue フォーム入力バインディング v-model

Vue フォーム入力バインディング v-model

1.vモデル

v-modelフォームの値と属性の双方向バインディングを実現できることを指定します。つまり、フォーム要素の値が変更されると、属性の値が自動的に更新され、属性の値が更新されると、フォームの値が自動的に更新されます。

2. プロパティとイベントのバインディング

v-model内部的に、異なる入力要素に対して異なる属性を使用し、異なるイベントをスローします。

  • 1. text要素とtextarea要素はvalue属性とinputイベントを使用します。
  • 2. checkboxとラジオボタンはchecked属性とchangeイベントを使用します。
  • 3. selectフィールドは、 valuepropとして受け取り、 changeイベントとして受け取ります。

3. フォーム要素のバインディング

3.1 入力バインディング

<input v-model="message" placeholder="入力してください...">
<p>入力内容は次のとおりです: {{ message }}</p>
 

3.2 テキストエリアバインディング

<span>入力内容は次のとおりです:</span>
<p style="white-space: pre-line;">{{ メッセージ }}</p>
<br>
<textarea v-model="message" placeholder="複数行を入力してください..."></textarea>
 

3.3 チェックボックスバインディング

同じ配列にバインドされた複数のチェックボックス

<div id="アプリ">
  <input type="checkbox" id="バスケットボール" value="バスケットボール" v-model="趣味">
  <label for="basketball">バスケットボール</label>
  <input type="checkbox" id="football" value="フットボール" v-model="趣味">
  <label for="football">サッカー</label>
  <input type="checkbox" id="バレーボール" value="バレーボール" v-model="趣味">
  <label for="volleyball">バレーボール</label>
  <p>{{趣味}}</p>
</div>
<スクリプト>
  constアプリ = 新しいVue({
    el: "#app",
    データ: {
      趣味: []
    }
  })
</スクリプト>

3.4 無線バインディング

<div id="アプリ">
  <input type="radio" id="one" value="One" v-model="picked">
  <label for="one">1つ</label>
  <br>
  <input type="radio" id="two" value="Two" v-model="picked">
  <label for="two">2</label>
  <br>
  <span>選択: {{picked }}}</span>
</div>
新しいVue({
  el: '#app',
  データ: {
    選んだもの: ''
  }
})
 

3.5 バインディングの選択

単一選択:

<div id="#app">
  <v-model を選択="選択済み">
    <option disabled value="">選択してください</option>
    <option>あ</option>
    <option>B</option>
    <option>C</option>
  </選択>
  <span>選択済み: {{ selected }}</span>
</div>
新しいVue({
  el: '...',
  データ: {
    選択: ''
  }
})

複数のオプションを選択する場合は、 multiple属性を追加するだけです

<div id="#app">
  <select v-model="selected" multiple style="width: 50px;">
    <option>あ</option>
    <option>B</option>
    <option>C</option>
  </選択>
  <br>
  <span>選択済み: {{ selected }}</span>
</div>
 

4. 値のバインディング

ラジオボタン、チェックボックス、選択ボックスオプションの場合、 v-modelにバインドされる値は通常、静的な文字列です (チェックボックスの場合はブール値になることもあります)。
しかし、場合によっては、 Vueインスタンスの動的propertyに値をバインドしたい場合があります。これはv-bindで実現でき、このpropertyの値は文字列である必要はありません。

<div id="アプリ">
  <label v-for="趣味の中の趣味">
    <input type="checkbox" :id="趣味" :value="趣味" v-model="test趣味">{{趣味}}
  </ラベル>
  <p>{{テスト趣味}}</p>
</div>
<スクリプト>
  constアプリ = 新しいVue({
    el: "#app",
    データ: {
      趣味: ["バスケットボール"、"サッカー"、"バドミントン"、"卓球"、"テニス"]、
      テスト趣味: []
    }
  })
</スクリプト>

4.1 コードの詳細

  • 1. バックエンドから返されるデータをシミュレートするために、 data内にhobbies配列を作成しました。データは動的です。
  • 2.別の配列testHobbyが定義され、チェックボックスのデータがそれにバインドされます。チェックボックスのデータがチェックされている限り、 testHobbyに追加されます。
  • 3. forループを使用してhobbiesデータのデータを走査します
  • 4. inputタグはid属性とvalue属性にバインドされており、その値は走査されたデータです。Web ページのソース コードを開くと確認できます。
  • 5. v-model inputタグをtestHobbyにバインドします。

最後に、バインディングの効果とバインディング後のWebページのソースコードを確認しましょう。

バインディング後のidとvalueの値は、トラバースされたhobbyであることがわかります

5. 修飾語

5.1 .lazy

デフォルトでは、 v-modelinputイベントがトリガーされた後に入力ボックスの値をデータと同期します。 lazy修飾子を追加すると、Enter キーが押されたとき、またはフォーカスが失われたときにのみ値が変更されるようにすることができます。

<!-- 「input」が押されたときではなく、フォーカスを失ったときや Enter キーを入力したときに値を変更します -->
<input v-model.lazy="msg">
 

5.2 .数値

ユーザーの入力値を自動的に数値型に変換する場合は、 v-modelnumber修飾子を追加します。

<input v-model.number="年齢" type="数値">


type="number"の場合でも、 HTML入力要素の値は常に文字列として返されるため、これは多くの場合便利です。 parseFloat()で値を解析できない場合は、元の値が返されます。

5.3 .トリム

ユーザーが入力した先頭と末尾の空白文字を自動的にフィルタリングしたい場合は、 v-modeltrim修飾子を追加します。

<input v-model.trim="msg">

これで、 Vueフォーム入力バインディングv-modelに関するこの記事は終了です。より関連性の高いVue v-modelコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Vueフォームバインディングとコンポーネントの詳細な説明
  • Vue フォームに動的にコンポーネントを追加する実例
  • Vue ループ コンポーネントと検証マルチフォーム検証の例
  • Vueフォームイベントデータバインディングの詳細な説明
  • Vue のフォームとコンポーネントの二重バインディングをご存知ですか?

<<:  Nginxの書き換えモジュールの詳細な説明

>>:  Web ページでフラッシュの wmode 属性を使用する方法をご存知ですか?

推薦する

このような大画面のデジタルスクロール効果が必要になる場合があります

大画面のデジタル スクロール効果は、最近の作業における大画面 UI ダイアグラムから生まれました。U...

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例

Spring jdbc のデータベース操作オブジェクト モデルの詳細な例Spring Jdbc デー...

コードを通じてHTMLエスケープ文字を識別する方法について説明します

データ内に次のような特徴を持つ「 ' 」などの文字が含まれることがあります。 &# ...

ブラインドの特殊効果を実現するネイティブJS

この記事では、ネイティブ JS で実装されたブラインドの特殊効果を紹介します。効果は次のとおりです。...

Docker のタイムゾーンの問題とデータ移行の問題

最新のソリューション: -v /usr/share/zoneinfo/Asia/Shanghai:/...

Linux での grep コマンドの使い方の詳細な説明

Linux grep コマンドLinux の grep コマンドは、ファイル内の条件を満たす文字列を...

Vue-CLI3.xはプロジェクトをサーバーに自動的にデプロイします

目次序文1. scp2をインストールする2. テスト/本番環境サーバーのSSHリモートログインアカウ...

MySqlのインストールとアンインストールに関する詳細なチュートリアル

この記事では、MySqlのインストールとアンインストールのチュートリアルを参考までに紹介します。具体...

JavaScript でシンプルな Web 時計を実装する

JavaScript を使用して Web ページ クロックを実装します。効果は次の図に示されています...

MySQLテーブルの自動インクリメント列の初期値をリセットする方法

MySQLテーブルの自動インクリメント列の初期値をリセットする方法1. 問題の説明MySQL データ...

Nginx リバース プロキシを使い始める

目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...

Dreamweaver で Zen コーディングを使用する方法

前回の記事「Zen Coding: HTML/CSS コードを素早く記述する方法」を公開した後、一部...

過去の Linux イメージの問題を修正するためのサンプル分析

過去の Linux イメージに関する問題を修正従来の Linux イメージで作成された ECS クラ...

Vueルータールーティングの詳細な説明

目次1. 基本的な使い方2. 注意すべき点3. マルチレベルルーティング(マルチレベルルーティング)...

MySQLのスペースをクリーンアップするいくつかの具体的な方法

目次序文1. ファイルのディスク使用量を確認する1.1 ディスク容量の使用状況を確認する1.2 ディ...