vモデル<!--親コンポーネント--> <テンプレート> <!--v-model ディレクティブは構文糖衣です--> <子 v-model="モデル"></子> <!-- v-model ディレクティブを展開すると、次のコードと同じになります --> <!-- v-model バインディングのデフォルト イベントは input で、デフォルトのプロパティは value 属性です --> <子:value="モデル" @input="モデル = $イベント"></子> </テンプレート> 子コンポーネントのモデル オプションを使用して、v-model バインディングのデフォルトのイベントと prop カスタム プロパティを変更することもできます。 //サブコンポーネントエクスポートデフォルト{ モデル: { プロパティ: 'チェック済み'、 イベント: '変更' } } したがって、対応する親コンポーネントが v-model を使用する場合の同等の操作は次のようになります。 <テンプレート> <Child :checked="モデル" @change="モデル = $event"></Child> <テンプレート> v-modelは通常、フォームコントロールに使用されます。これにより、コンポーネントの制御機能が強化されるためです。 .sync<!-- 親コンポーネント --> <テンプレート> <!-- .sync は v2.4 で追加されました。これを使用して、子コンポーネントに渡されるプロパティを変更できます --> <Child:xxx.sync="モデル"></Child> <!-- 次のコードと同等 --> <Child :xxx = "モデル" @update:xxx = "モデル = $event"></Child> </テンプレート> <!-- 子コンポーネント --> <input :value="xxx" @input = "$emit('update:xxx', $event.target.value)"/> ここでバインドされている属性名 xxx は変更可能であり、対応する属性名も変更されます。 <!-- 親コンポーネント --> <テンプレート> <子:foo.sync="モデル"></子> </テンプレート> <!-- 子コンポーネント --> <input :value = "foo" @input = "$emit('update:foo', $event.target.value)"/> .sync の原則では、子コンポーネントの $emit メソッドを使用して、親コンポーネントにイベントを送信します。その適用シナリオは、子コンポーネントが親コンポーネントから渡されたプロパティを変更することです。 .sync修飾子の制御機能はすべて親コンポーネントにあり、イベント名は比較的固定されたupdate:xxxです。 これら 2 つは本質的に同じであり、違いはありません:「トリガー イベントをリッスンする」=「(val) => value = val」。 微妙な違い1. ただし、v-model はデフォルトで input や textarea などのコンポーネントの入力イベントに対応しています。この input イベントを子コンポーネントで置き換えた場合、その本質は .sync 修飾子とまったく同じです。比較的単純で、複数持つことはできません。 // サブコンポーネントは、デフォルトで v-model に対応するネイティブ入力イベントを置き換えるためにカスタムイベントを使用できますが、サブコンポーネントで手動で $emit を実行する必要があります。 モデル: { プロパティ: "値", イベント: 「更新」 }, コンポーネントは複数のプロパティで .sync 修飾子を使用でき、コンポーネントが 1 つのプロパティしか持てない v-model とは異なり、複数の「プロパティ」を同時に双方向にバインドできます。 機能シナリオを要約します。 1. v-model は、最終的な操作結果、双方向バインディングの結果、値、および変更操作に重点を置いています。 ただし、例外もあります。つまり、v-model は一部の .sync 状況を置き換えることもできます。これは、このコンポーネントの唯一の機能が状態を切り替えることであり、この状態が最終的な操作値である場合です。このとき、.sync 修飾子を置き換えることができます。双方向バインディングの 2 つの異なる方法を使用すると、コンポーネントの構造をすばやく理解できます。 以下もご興味があるかもしれません:
|
<<: nginx を使用して特定のインターフェース (URL) をブロックする方法
>>: Linux での mysql8.018 のインストールと設定のプロセスの詳細な説明
目次序文開発環境新しいプロジェクトを作成するモバイルウェブプロジェクト角度付きJSONパブリックモジ...
序文hover疑似クラスが要素に境界線を追加すると、要素内のコンテンツがずれることがあります。box...
WeChatアプレットプロジェクトでは、開発モジュールに手書き署名機能が含まれ、WeChatアプレッ...
Docker バージョン 1.13.1問題プロセス特定の環境のMySQLコンテナを停止、強制終了、ま...
目次序文スタックと2つのキューを理解する実行プロセス簡単な例より難しい例要約する序文以下の内容はブラ...
この記事のシナリオと組み合わせて、Nginx と Java 環境 (SpringBoot プロジェク...
ソフトウェア開発者であれば、Subversion に精通している必要があります。 Subversio...
1. 設置前の清掃 rpm -qa | grep jdk rpm -qa | grep gcj yu...
Vue ファースト スクリーン パフォーマンス最適化コンポーネントVue ファースト スクリーン パ...
この記事では、Dockerでイメージ情報を表示する方法を学ぶ必要があります。 1. imagesコマ...
目次例示する1. Dockerリモートアクセスを有効にする2. Dockerに接続する3. イメージ...
目次Refsとは何か1. 文字列型参照2. コールバック参照React.createRef() 4....
この記事では、二次リンクを実現するためのReactの具体的なコードを参考までに共有します。具体的な内...
最近、業務上の理由により、Web ページ上のさまざまなネットワーク カメラにアクセスしてデバッグする...
目次1. テーブル名を変更する方法2. 注記要約: 1. テーブル名を変更する方法RENAME TA...