Vue における v-model を使用したクロスコンポーネントバインディングの基本的な実装方法

Vue における v-model を使用したクロスコンポーネントバインディングの基本的な実装方法

みなさんこんにちは。今日はv-modelを使って親子コンポーネントのバインディング効果を実現する方法についてお話します。

1: シンプルバージョンのコードは次のとおりです。

親コンポーネント:

<テンプレート>
  <div>
  // 3: 子コンポーネントを使用し、v-model を使用して <About v-model="father"/> をバインドします。
  </div>
</テンプレート>

<スクリプト>
// 1: サブコンポーネントをインポートします。import About from "./About";
エクスポートデフォルト{
// 2: サブコンポーネントを登録する: {
    について、
  },
  データ() {
      戻る {
      // 空の父親の値:''
      }
  },
  //コンポーネントデータの変更を監視する watch:{
      父(val){
          コンソールログ(val);
      }
  }
};
</スクリプト>

サブコンポーネント:

<テンプレート>
  <div>
  // 2: v-model を使用して <input type="text" v-model="son"> をバインドします。
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
    // 1: 親コンポーネントから情報プロパティを受け取る: {
        価値:{
            タイプ:文字列、
            デフォルト:''
        }
    },
    データ() {
        戻る {
        // 3: 空の値を代入する:''
        }
    },
    // 4: 変更をリッスンする watch:{
        // 息子に値を割り当てる   
        価値(){
        // ここで this.value は props の値です
            this.son = this.value
        },
        // 親コンポーネントにsonを渡すson(){
            this.$emit('input',this.son)
        }
    }
}
</スクリプト>

子コンポーネントが親コンポーネントに渡されるときに $emit の最初のパラメータが 'input' である理由については、興味のある方は v-model 実装の原則について学ぶことができます。

2: プロジェクト内での使用に移りましょう(子コンポーネントの画像アドレスを取得し、親コンポーネントに渡し、画像情報を同期的に更新します)

基本的に同じ

Ⅰ: 親コンポーネントに子コンポーネントを導入し、子コンポーネントタグでv-modelを使用して空の値を割り当てる
(UploadImg タグはインポートされたサブコンポーネントです)

Ⅱ: 次に、props を使用して子コンポーネントで受け取ります。

III: サブコンポーネントページでも v-model を使用し、データに空のイメージを割り当てます。

IV: サブコンポーネントの変更を監視するためにwatchを使用する

分解図のコード:

value 関数は、渡された親コンポーネントを子コンポーネントに割り当てます。This.value は props の値です。

価値() {
      this.SonStaffPhoto = this.value
      console.log(this.SonStaffPhoto)
    }

これはv-modelにバインドされた子コンポーネント関数であり、親コンポーネントに渡すために使用されます。

息子スタッフ写真() {
      this.$emit('input', this.SonStaffPhoto)
    },

この時点で、親コンポーネントに渡したいコンテンツを this.SonStaffPhoto に割り当てることができます(画像アドレスを格納する変数に割り当てました)

V: 親コンポーネントの変更を監視することもできます。

親コンポーネントの This.staffPhoto にも、バインドするコンテンツを割り当てることができます (子コンポーネントの画像が更新され、親コンポーネントも同期的に更新されるように、最新の画像変数に割り当てました)

要約する

これで、Vue で v-model を使用したクロスコンポーネントバインディングの基本的な実装方法についての記事は終了です。Vue で v-model を使用したクロスコンポーネントバインディングに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • v-model 双方向バインディングデータを実装する vue カスタム コンポーネントのサンプル コード
  • vue3 コンポーネントでの v-model の使用と詳細な説明
  • Vue の v-model ディレクティブと .sync 修飾子の違いの詳細な説明
  • Vue の双方向イベントバインディング v-model の原理についての簡単な説明
  • Vueはv-modelを使用してel-paginationコンポーネントのプロセス全体をカプセル化します。
  • Vue で親子コンポーネントの値を双方向バインドするために v-model を使用するときに発生する問題と解決策
  • Vue フォーム入力ボックスがフォーカスおよびぼかしイベントをサポートしていない問題の解決策
  • カスタムイベントを使用した Vue のフォーム入力コンポーネントの詳細な使用方法 [日付コンポーネントと通貨コンポーネント]
  • Vue フォーム入力バインディングのサンプルコード
  • Vue フォームの入力フォーマットの中国語入力方法の異常
  • Vue フォーム入力バインディング v-model

<<:  mysqlは昨日の日付、今日の日付、明日の日付、前の時間と次の時間の時刻を取得します

>>:  Linux 上の MySQL 5.7 でパスワードを忘れる問題を解決する

推薦する

冗長カーネルを削除するLinuxディープインの実装方法

前の記事では、deepin linux に新しいカーネルを手動でインストールする方法について説明しま...

CentOS 8 / RHEL 8 に VirtualBox 6.0 をインストールするための詳細なチュートリアル

VirtualBox は、技術者が異なる種類の複数の仮想マシン (VM) を同時に実行できるようにす...

mysql order by in の文字順序の詳細な説明 (推奨)

//MySQL ステートメント SELECT * FROM `MyTable` WHERE `id...

Ubuntu 20.04 IPアドレスを変更する方法の例

例:本日、前回のオフィスコラボレーションプラットフォーム実験の続きをしていたところ、仮想マシンは以前...

JavaScript はフロントエンド Web ページでカウントダウンを実装します

ネイティブJavaScriptを使用してカウントダウンを簡単に実装します。参考までに、具体的な内容は...

iframe テクニックを使用して訪問者 QQ 実装のアイデアとサンプル コードを取得する

今日、仕事中に、一時的に追加した友人から、Web ページを使用して訪問者の QQ を取得する方法を尋...

フロートをクリアするための CSS メソッドの概要

フロートはWebページのレイアウトでよく使用されますが、フローティングブロックレベル要素は標準のドキ...

Ubuntu の空き容量を増やす 5 つの簡単な方法

序文ほとんどの人は、システム ディスク ストレージが少ないときにこの操作を実行するか、Linux シ...

Linux yum パッケージ管理方法

導入yum (Yellow dog Updater, Modified) は、Fedora、RedH...

Reactスロットの使い方

目次必要コアアイデアReactでスロットを実装する2つの方法必要コンポーネントを自分で書きました。コ...

React+Antdはテーブルの追加、削除、変更の例を実装します

目次テーブル/index.jsテーブル/モデル/index.jsテーブル/モデル/モジュール/bas...

mysql5.7.19 winx64 解凍版のインストールと設定のチュートリアル

mysql 5.7.19 winx64解凍版のインストールチュートリアルを収録しました。具体的な内容...

nginxでイメージサーバーを構築する手順の詳しい説明(ルートとエイリアスの違い)

インストール手順は省略します( yum -y install nginx;を使用して直接インストール...

Vueでクラススタイルを使用する方法の詳細

目次1. ブール2. 表現3. マルチクラスパッケージ4. v-bind でクラス class を直...