Vueカスタムツリーコントロールの使い方の詳細な説明

Vueカスタムツリーコントロールの使い方の詳細な説明

この記事では、Vueカスタムツリーコントロールの使い方を参考までに紹介します。具体的な内容は次のとおりです。

効果画像:

データ構造:

木: {
        title: '', // タイトル (名前) 
        キー: '0'、
        head: '', // アバター selectStatus: false, // チェックボックスの選択状態 children: [
          {
            タイトル:「王王エピソード1」
            キー: '0-0'、
            頭: ''、
            選択ステータス: false、
            子供たち: [
              {
                キー: '0-0-0'、
                タイトル:「王仔1」
                ヘッド: require('@/assets/wan.jpg'),
                選択ステータス: false
              }
            ]
          },
          {
            タイトル:「王王パート2」
            キー: '0-1'、
            頭: ''、
            選択ステータス: false、
            子供たち: [
              {
                タイトル:「王旺二部一軍」
                キー: '0-1-0'、
                頭: ''、
                選択ステータス: false、
                子供たち: [
                  {
                    タイトル:「王旺二部、チーム1、クラス1」、
                    キー: '0-1-0-2'、
                    頭: ''、
                    選択ステータス: false、
                    子供たち: [
                      {
                        タイトル:「王在3」
                        キー: '0-1-0-2-0'、
                        ヘッド: require('@/assets/wan.jpg'),
                        選択ステータス: false
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
},

アイデア:

/*カスタム ツリー コントロールの核となるのは、「コンポーネントが自分自身を呼び出す」ことです。ここでは、ツリー コントロールはサブコンポーネントにカプセル化されています*/
<テンプレート>
  <div>
    <div class="tree-custom">
      <div :style="indent" @click="toggleChildren"> //toggleChildren イベントは、「コンテンツを展開」および「コンテンツを閉じる」ためのコントロール イベントです。/* 
       再帰データ表示の具体的な内容は次のとおりです。たとえば、このプロジェクトでの再帰の具体的な内容は、エフェクト図から「Picture/Avatar」、「Title/Name」、「null/CheckBox」です。
       効果図にはロジックが示されています。
       <div v-if="!headImg && ラベル">
       //アバター画像にタイトルがない場合は、「arrow-title」スタイルを表示します</div>
        <div v-if="headImg">
       //アバター画像がある場合は、「avatar-name-checkBox」スタイルを表示します</div>
       */      
      </div>
      <tree-custom // "自分自身を呼び出す"
        :key="children.key" // キーの値は一意です v-for="children in treeData"  
        v-if="showChildren" // トグルチャイルド イベントに基づいてコンテンツを展開するかどうかを決定します:treeData="children.children" // 以下はいくつかのプロパティです。理解できるはずです。もう言葉はありません!
        :label="子供.タイトル"
        :headImg="子供の頭"
        :pkid="子供.キー"
        :depth="depth+1" // これは各行のインデント スタイルを制御するために使用されます。具体的な使用法を確認するには、一番下に移動 => indent() します: selectStatus="children.selectStatus"
        v-bind="$attrs" // これら 2 つは、祖父母コンポーネントと孫コンポーネント間の通信を実装するために使用されます。v-on="$listeners"
      >
      </tree-custom>
    </div>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  name: 'TreeCustom', // コンポーネントに名前を付けます。それ以外の場合、データ()を呼び出す方法{
    戻る {
      showChildren: true, // これはコンテンツを表示するかどうか、つまり展開したり折りたたんだりするかどうかを制御するデータです。
      currentInfoData: {} // これは現在の行のデータを取得するために使用されます。簡潔にするために、上記のコードの特定の使用法は私が削除しました。あまり意味がありません。}
  },
  //落とし穴を避けるために、オブジェクトのデフォルト値はファクトリー関数によって返されるべきです props: {
    ツリーデータ: {
      タイプ: 配列、
      デフォルト: () => []
    },
    ラベル: {
      タイプ: 文字列、
      デフォルト: () => ''
    },
    深さ:
      タイプ: 数値、
      デフォルト: () => 0
    },
    ヘッドイメージ: {
      タイプ: 文字列、
      デフォルト: () => ''
    },
    キッド:
      タイプ: 文字列、
      デフォルト: () => ''
    },
    選択ステータス: {
      タイプ: ブール値、
      デフォルト: () => null
    }
  },
  計算: {
    indent () { // 異なるレベルのインデントスタイルを定義します return { transform: `translate(${(this.depth - 1) * 15}px)` }
    }
  },
  メソッド: {
    トグルチャイルド(){
      this.showChildren = !this.showChildren
    },
    チェックボックス選択変更 (e) {
      定数チェック = e.target.checked
      (チェックあり){
       // $listeners メソッドを使用して祖先の関数を呼び出します。これは再帰コンポーネントなので、コンポーネントは厳密な親子関係を持たない可能性があるため、$emit や $parent などのメソッドは適切ではありません。this.$listeners.addSelectedData(this.currentInfoData)
      }
      チェックされている場合{
        this.$listeners.deleteSelectedData(this.currentInfoData)
      }
    },
    getCurrentInfo (ラベル、headImg、pkid) {
      this.currentInfoData = {
        キー: pkid、
        タイトル: ラベル、
        ヘッド:headImg
      }
    }
  }
}
</スクリプト>
/*コンポーネント呼び出しメソッド*/
<div class="tree-scroll">
  <ツリーカスタム
    :label="ツリーのタイトル"
    :headImg="ツリーのヘッド"
    :treeData="tree.children"
    :pkid="ツリーキー"
    :深さ= "0"
    :selectStatus="ツリー.selectStatus"
    @addSelectedData="選択されたデータを追加"
    @deleteSelectedData="選択したデータを削除" />
</div>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • ツリーコントロールを使用した Vue+iview の具体的な使用法
  • Ant Design VueのツリーコントロールのdefaultExpandAll設定が無効になる問題を解決します
  • サードパーティに頼らずにVueを使用してTreeツリーコントロールを実装するケーススタディ
  • Vue+Element UI ツリー コントロールはドロップダウン機能メニュー (ツリー + ドロップダウン + 入力) を統合します。
  • Vue 再帰コンポーネント実戦シンプルなツリーコントロールサンプルコード
  • vue-element Treeツリーコントロール充填ピットの詳細な説明
  • Vue elementUI ツリー ツリー コントロールは親ノード ID インスタンスを取得します。
  • Vueは再帰コンポーネントを使用してツリーコントロールのサンプルコードを記述します
  • vue.js の element-ui ツリー ツリー コントロールを iview に変更する方法
  • VUE の Ele.me ツリー コントロールに追加、削除、変更機能を追加するためのサンプル コード

<<:  MySQL トリガーの紹介、トリガーの作成、使用制限の分析

>>:  Nginx+FastDFSでイメージサーバーを構築

推薦する

Nginx+SSL による双方向認証を実装するためのサンプル コード

まずディレクトリを作成する cd /etc/nginx mkdir ssl cd ssl CA と自...

MySQLクエリ条件のnot inとinの違いと理由

まずSQLを書く SELECT DISTINCT from_id タラから cod.from_id ...

12個のJavascriptテーブルコントロール(DataGrid)が整理されています

DataGrid コントロールの DataSource プロパティがデザイン時に設定されている場合、...

Linuxシステムにおける仮想デバイスファイルのさまざまな実用的な使用法の詳細な説明

みなさんこんにちは。私は梁旭です。ご存知のとおり、Linux ではデバイス ファイルも含めすべてがフ...

Vueはドラッグアンドドロップを使用して構造ツリーを作成します

この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...

JavaScriptの強力な演算子をいくつか見てみましょう

目次序文1. ヌル合体演算子2. ??= 空代入演算子3. ?. オプション連鎖演算子4. ?: 三...

Hyper-v仮想マシンを使用してCentos7をインストールする

目次導入準備するシステムイメージをダウンロードHyper-Vを有効にする新しい仮想ネットワークスイッ...

HTMLテーブルタグの詳しい解説(初心者向け)

表> <TR> <TD> <TH> <キャプション&...

中国の専門ではない:文化の違いの中でのウェブ開発

Web デザインと開発は大変な作業なので、少数の人だけを対象に設計しないでください。これは外国人が...

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

MySQL 8.0のインストールと設定方法は参考までに。具体的な内容は以下のとおりです。ダウンロード...

Nginx の http リソース リクエスト制限の詳細な説明 (3 つの方法)

前提条件: nginx には、ngx_http_limit_conn_module モジュールと n...

HTML テーブル マークアップ チュートリアル (22): 行の境界線の色属性 BORDERCOLORLIGHT

行内では、明るい境界線の色を個別に定義できます。基本的な構文<TR ボーダーカラーライト=co...

JavaScript セレクター関数 querySelector および querySelectorAll

目次1. querySelectorは単一の要素を照会する1. ドキュメントインスタンスの呼び出し2...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...

VirtualBox Centos7 の NAT+ホストオンリーネットワークの落とし穴のまとめ

目次1. 問題の背景2. 仮想マシン ネットワーク カードの接続方法は何ですか? 2.1 NAT 2...