Vue バインディング オブジェクト、配列データを動的にレンダリングできないケースの詳細な説明

Vue バインディング オブジェクト、配列データを動的にレンダリングできないケースの詳細な説明

プロジェクトシナリオ:

Dark Horse Vueプロジェクト管理の実践、製品分類の取得、拡張バーのタブページでのデータ属性の変更

問題の説明:

+ 新しいタグ タブをクリックすると、追加する属性を入力するための入力ボックスがポップアップ表示されます。

その結果、クリックしてもすぐにレンダリングされない。

非同期getParametersList() {
      this.cat_id = this.currentSelect[this.currentSelect.length - 1];
      const { data: res } = this.$http.get( を待ちます
        `categories/${this.cat_id}/attributes`、
        {
          パラメータ: { sel: "many" }
        }
      );
      this.paramasData = res.data;
 
      res.data.forEach(アイテム => {
        item.attr_vals = item.attr_vals ? item.attr_vals.split(" "): [];
        //テキスト ボックス項目の表示と非表示を制御します。inputVisible=false
        //テキストボックスに入力された値 item.inputValue=''
        コンソール.log(アイテム)
      });
      コンソールにログ出力します。
    },
//ボタンをクリックしてダイアログボックスを表示します //ボタンをクリックしてテキスト入力ボックスを表示します showInput(row) {
      行.inputVisible = true
      // テキスト ボックスが自動的にフォーカスを取得するようにします // $nextTick メソッドの機能は、ページ上の要素が再レンダリングされた後にのみ、コールバック関数でコードを指定することです // this.$nextTick((_) => {
      // this.$refs.saveTagInput.$refs.input.focus()
      // })
    },

原因分析:

この記事を参照

https://www.jb51.net/article/222379.htm

パラメータリストを取得した後、すぐに双方向に値をバインドし、各列のオブジェクトに inputvisible コントロール属性を追加したことが判明しました。その結果、後でボタンがクリックされたときに、入力ボックスの v-if で各オブジェクトの Inputvisible をリアルタイムにレンダリングすることができませんでした。

双方向バインディングの後、配列内のオブジェクトのプロパティ値が追加されます。Vue では、その後に配列に追加されたオブジェクトの getter 関数と setter 関数をバインドする方法がないため、リアルタイム レンダリングを実現できません。

解決:

データを変更したら、data 内のデータに値を割り当てます。

今すぐ

非同期getParametersList() {
      this.cat_id = this.currentSelect[this.currentSelect.length - 1];
      const { data: res } = this.$http.get( を待ちます
        `categories/${this.cat_id}/attributes`、
        {
          パラメータ: { sel: "many" }
        }
      );
      
 
      res.data.forEach(アイテム => {
        item.attr_vals = item.attr_vals ? item.attr_vals.split(" "): [];
        //テキスト ボックス項目の表示と非表示を制御します。inputVisible=false
        //テキストボックスに入力された値 item.inputValue=''
        コンソール.log(アイテム)
      });
      this.paramasData = res.data;
      コンソールにログ出力します。
    },

これで、vue バインディング オブジェクト、配列データは動的にレンダリングできないという記事は終わりです。vue バインディング オブジェクト、配列データは動的にレンダリングできないという関連の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+elementUI コンポーネントは、折りたたみ可能な動的レンダリングのマルチレベル サイドバー ナビゲーションを再帰的に実装します。
  • Vue の img の src が動的レンダリング時に表示されない問題の解決方法
  • Vueナビゲーションバーの動的レンダリング例
  • Vue フォーム バインディングのサンプル コード (ラジオ ボタン、選択ボックス (単一選択、複数選択、v-for でレンダリングされた動的オプション))
  • VUE Element-UI マルチレベルメニューダイナミックレンダリングコンポーネントの詳細な説明

<<:  MySQL からエクスポートされた scv ファイル内の文字化けやジャンプ行の問題をすばやく解決します

>>:  Linux での tcpdump コマンドの詳細な分析と使用方法

推薦する

CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...

MySQL 永続統計の詳細な説明

1. 永続的な統計情報の重要性:統計は、MySQL が実行プランを生成するためのガイドとして使用され...

未来志向の総合的なウェブデザイン:プログレッシブエンハンスメント

<br />原文: プログレッシブエンハンスメントを理解するアーロン・ガスタフソン翻訳:...

Linux のスケジュールされたタスクの crontab のインストールと使用の詳細な説明

crontabをインストールするyum install crontabs CentOS 7が付属して...

Youku 動画から 30 秒の広告コードを削除する 2 つの方法

誰もがこんな気持ちになったことがあると思います。30 秒の広告が入った動画を見ると、とても不快に感じ...

Mysql テーブルコメントフィールド取得操作

余計なことは言わないで、コードだけ見てみましょう〜 -- テーブル内のフィールドコメントを表示および...

Linuxシステムの操作レベルの詳細な紹介

目次1. Linuxシステムの操作レベルの概要2. 実行レベルを確認する3. 現在のシステムの動作レ...

要素UIテーブルはドロップダウンフィルタリング機能を実現します

この記事の例では、要素UIテーブルにドロップダウンフィルタリングを実装するための具体的なコードを参考...

JavaScript の isPrototypeOf 関数

目次1. isPrototypeOf()例 1、オブジェクト クラス インスタンス:例 2: Hum...

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のようにLIKE ではデータ全体が一致する必要がありますが、REGEXP では部分的な一致のみが必要...

JavaScript における async と await の使い方とメソッド

JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...

Docker で Oracle 11g イメージ構成をプルダウンする際の問題を分析する

1. イメージをプルするdocker pull レジストリ.cn-hangzhou.aliyuncs...

JavaScript で円形カルーセルを実装する

この記事では、円形カルーセルを実装するためのJavaScriptの具体的なコードを参考までに紹介しま...

Docker に共通コンポーネント (mysql、redis) をインストールする方法

Dockerはmysqlをインストールします docker search mysql 検索 dock...

1つの記事でJavaScript DOM操作の基本を学ぶ

DOM の概念DOM: ドキュメント オブジェクト モデル: ドキュメント オブジェクト モデルは、...