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 コマンドの詳細な分析と使用方法

推薦する

背景画像の配置におけるbackground-position属性の自己理解

最近、プロジェクトではラベルやボタンなどの断片的な画像をたくさん使用する必要があります。また、CSS...

JavaScript+html はフロントエンドページでランダム QR コード検証を実装します

クールなフロントエンドページのランダムQRコード検証を参考までに共有します。具体的な内容は次のとおり...

ソースコードの観点からキープアライブコンポーネントのキャッシュ原理に答える

今日は、早速本題に入り、面接中に尋ねられた質問、つまりキープアライブ コンポーネントのキャッシュ原理...

JavaScriptはすべての選択と選択解除の操作を実装します

この記事では、JavaScriptで全選択と全選択解除の操作を実装するための具体的なコードを参考まで...

vuex データの永続化のための 2 つの実装ソリューション

目次ビジネス要件:解決策 1: vuex-persistedstate解決策2: vuex-pers...

MySQLデータ復旧のさまざまな方法の概要

目次1. はじめに2. 直接回復2.1 mysqldumpバックアップの完全リカバリ2.2 xtra...

LinuxでIPアドレスを手動で設定するための詳細な手順

目次1.まずネットワークカードの設定ディレクトリに入る2. ifcfg-ens33ネットワークカード...

カレンダー効果を実現するJavaScript

この記事では、カレンダー効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

Node.js コンソールで強調表示されたコードを印刷する方法

序文コードを実行してエラーが発生すると、エラーが出力されます。エラーにはスタック情報が含まれており、...

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

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

MySQL 8.0.13 のインストールと設定のグラフィックチュートリアル

Msyqlデータベースのインストール、参考までに具体的な内容は次のとおりです。 ①ブラウザでhttp...

初心者向けWebサイト構築ガイド⑥:FlashFXPの詳しい使い方

今日は、サイトの設定やウェブサイトのアップロードなど、FlashFXP の最も基本的な機能を紹介しま...

MySQL 5.7.17 インストール グラフィック チュートリアル (Windows)

最近データベースを学び始めたのですが、とても興味深いコースだと感じていますが、含まれる内容の多くは私...

CSS コンテナ背景 10 色グラデーション デモ (linear-gradient())

文法 背景: linear-gradient(direction,color-stop1,color...

時間のかかるMySQLレコードのSQL例の詳細な説明

mysqlは時間のかかるSQLを記録しますMySQL は、最適化と分析のために、時間のかかる SQL...