目次
入力ボックスを聞く
変更前と変更後の入力ボックスの値を記録する
複数の入力ボックスの値を記録する
この記事では、Vue で入力ボックスの変更された値を処理する方法について説明しました。
ホームページ ウェブフロントエンド フロントエンドQ&A vue 入力は前後の値を変更します

vue 入力は前後の値を変更します

May 11, 2023 pm 12:35 PM

Vue は、応答性の高いコンポーネントを簡単に作成できる人気の JavaScript フレームワークです。 WEB 開発では、コンポーネントの入力ボックスは最も一般的な要素の 1 つです。多くのシナリオでは、開発者は入力ボックスの値を追跡して処理する必要があります。この記事では、Vue で入力ボックスの変更された値を処理する方法について説明します。

入力ボックスを聞く

Vue には、入力ボックスの値を監視するさまざまな方法が用意されています。最も一般的な方法は、v-model を使用することです。 v-model ディレクティブは双方向バインディングを実装します。つまり、入力ボックスへの変更はコンポーネント インスタンスのデータ属性に反映され、データ属性の値が変更されると、入力ボックス対応する値も自動的に更新されます。

次は、v-model を使用してテキスト入力ボックスの値を監視する方法を示す簡単な例です:

<template>
  <div>
    <label for="username">用户名:</label>
    <input id="username" v-model="username">
    <p>用户名: {{ username }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: ""
    };
  }
};
</script>
ログイン後にコピー

上記の例では、次を使用します。 v-model はテキスト入力ボックスをバインドし、コンポーネント インスタンスの username データ属性を維持します。ユーザーが入力ボックスに値を入力すると、username データ属性が自動的に更新され、テンプレート内の差異式 {{ username }} もそれに応じて更新されます。

変更前と変更後の入力ボックスの値を記録する

一部のシナリオでは、変更前と変更後の入力ボックスの値を知る必要があります。たとえば、フォームでは、ユーザーが行った変更を追跡し、後で使用できるようにこれらの変更を changes 配列に保存できるようにしたいと考えています。

Vue では、watch を使用してデータ属性の変更を監視できます。データ属性の値が変更された場合、handler 関数を使用していくつかの操作を実行できます。

次のコードを使用して、単一の入力ボックスの変更前と変更後の値を記録できます:

<template>
  <div>
    <label for="username">用户名:</label>
    <input id="username" v-model="username">
    <p>用户名: {{ username }}</p>
    <pre v-text="JSON.stringify(changes)">
<script> export default { data() { return { username: "", changes: [] }; }, watch: { username(newVal, oldVal) { if (newVal !== oldVal) { this.changes.push({ before: oldVal, after: newVal }); } } } }; </script>
ログイン後にコピー

上記のコードでは、新しい changes を追加して記録します。 配列。入力ボックスの各変更。 watch オプションの handler 関数をわずかに変更し、入力ボックスの値が変化したときにトリガーされるようになりました。新しい値が古い値と等しくない場合、前の値と次の値をオブジェクトの形式で changes 配列に保存します。

複数の入力ボックスの値を記録する

実際の開発では、通常、複数の入力ボックスの値を監視する必要があります。この場合、同じ形式のオブジェクトを使用して、入力ボックスのすべての変更を保存できます。オブジェクト内の属性名は入力ボックスの ID または名前で、属性値は入力ボックスが変更される前後の値を含むオブジェクトです。

<template>
  <div>
    <label for="username">用户名:</label>
    <input id="username" v-model="formData.username">
    <p>用户名: {{ formData.username }}</p>

    <label for="email">邮箱:</label>
    <input id="email" v-model="formData.email">
    <p>邮箱: {{ formData.email }}</p>

    <pre v-text="JSON.stringify(changes)">
<script> export default { data() { return { formData: { username: "", email: "" }, changes: {} }; }, watch: { formData: { handler(newVal, oldVal) { // 遍历对象 formData for (const key in newVal) { // 如果 newValue 和 oldValue 不同 if (newVal[key] !== oldVal[key]) { // 新增一个属性,属性名为输入框的名称或 ID if (!this.changes[key]) { this.$set(this.changes, key, {}); } // 设置属性值, 属性值包含 before 和 after 两个字段 this.changes[key].before = oldVal[key]; this.changes[key].after = newVal[key]; } } }, // 深度监听对象中的属性,当数据属性的值发生改变时,handler 中 callBack 函数将被执行。 deep: true } } }; </script>
ログイン後にコピー

上記のコードでは、data メソッドに新しい formData オブジェクトを追加することで、複数の入力ボックスの値を維持しています。また、新しい changes オブジェクトを追加して、すべての変更を記録します。

watch オプションの handler 関数を変更して、formData オブジェクトを走査するようにしました。入力ボックスの値が変更されたことを検出すると、changes オブジェクトをチェックして入力ボックスがすでに存在するかどうかを確認し、beforeafter# を設定します。 ## プロパティ値。入力ボックスが changes オブジェクトに存在しない場合は、新しい属性が追加されます。

また、

watch オプションの deep プロパティを true に設定します。これにより、formData# のプロパティが詳細に監視されます。 ## object を使用すると、入力ボックスの値が formData オブジェクトにネストされている場合に、データを正しく観察できます。 概要

この記事では、Vue で入力ボックスの変更された値を処理する方法について説明しました。

watch

を使用してデータ プロパティの変更を監視する方法と、入力ボックスの変更をオブジェクトに記録する方法について説明しました。実際の開発では、このテクノロジーは非常に便利で、フォーム内のすべての変更をリアルタイムで追跡するのに役立ちます。

以上がvue 入力は前後の値を変更しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? UseEffectとは何ですか?副作用を実行するためにどのように使用しますか? Mar 19, 2025 pm 03:58 PM

この記事では、functionコンポーネントでのデータフェッチやDOM操作などの副作用を管理するためのフックであるReactの使用Effectについて説明します。メモリリークなどの問題を防ぐための使用、一般的な副作用、およびクリーンアップについて説明します。

怠zyなロードの概念を説明してください。 怠zyなロードの概念を説明してください。 Mar 13, 2025 pm 07:47 PM

怠zyな読み込みは、必要になるまでコンテンツの読み込みを遅延させ、初期負荷時間とサーバーの負荷を削減することにより、Webパフォーマンスとユーザーエクスペリエンスを改善します。

JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? JavaScriptの高次関数とは何ですか?また、より簡潔で再利用可能なコードを書くためにどのように使用できますか? Mar 18, 2025 pm 01:44 PM

JavaScriptの高次関数は、抽象化、共通パターン、および最適化技術を通じて、コードの簡潔さ、再利用性、モジュール性、およびパフォーマンスを強化します。

JavaScriptでカリーはどのように機能し、その利点は何ですか? JavaScriptでカリーはどのように機能し、その利点は何ですか? Mar 18, 2025 pm 01:45 PM

この記事では、JavaScriptのカレーについて説明します。これは、マルチアーグメント関数を単一argument関数シーケンスに変換する手法です。 Curryingの実装、部分的なアプリケーションなどの利点、実用的な用途、コード読み取りの強化を調査します

React和解アルゴリズムはどのように機能しますか? React和解アルゴリズムはどのように機能しますか? Mar 18, 2025 pm 01:58 PM

この記事では、Virtual DOMツリーを比較してDOMを効率的に更新するReactの調整アルゴリズムについて説明します。パフォーマンスの利点、最適化技術、ユーザーエクスペリエンスへの影響について説明します。

connect()を使用して、ReactコンポーネントをReduxストアにどのように接続しますか? connect()を使用して、ReactコンポーネントをReduxストアにどのように接続しますか? Mar 21, 2025 pm 06:23 PM

記事では、Connect()、MapStateToprops、MapDispatchToprops、およびパフォーマンスへの影響を説明するReduxストアに反応コンポーネントをReduxストアに接続します。

usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? usecontextとは何ですか?コンポーネント間で状態を共有するためにどのように使用しますか? Mar 19, 2025 pm 03:59 PM

この記事では、ReactのUseContextを説明しています。これにより、小道具掘削を避けることで国家管理を簡素化します。再レンダーの削減により、集中状態やパフォーマンスの改善などの利点について説明します。

イベントハンドラーのデフォルトの動作をどのように防止しますか? イベントハンドラーのデフォルトの動作をどのように防止しますか? Mar 19, 2025 pm 04:10 PM

記事では、PreventDefault()メソッドを使用して、イベントハンドラーのデフォルト動作の防止、ユーザーエクスペリエンスの強化などの利点、およびアクセシビリティの懸念などの潜在的な問題について説明します。

See all articles