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でイメージサーバーを構築

推薦する

Centos8 に nginx をインストールするための詳細なチュートリアル (画像とテキスト)

Nginx (「エンジン エックス」と発音) は、インターネット上の最大規模のサイトの負荷を処理す...

モバイルアダプティブスタイルで@mediaを使用する方法

一般的な携帯電話のスタイル: @media all および (orientation : 縦向き) ...

Dockerコンテナでの静的ウェブサイトレイアウトの実装

サーバーの配置数日間無料で使用できるクラウドサーバー(Alibaba Cloud、Huawei Cl...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

Vueのカスタムイベントコンテンツ配信の詳細な説明

1. これは理解するのが少し複雑なので、原理を注意深く読んで自分で入力していただければ幸いです。 &...

Linux での nginx のインストール、展開、使用方法の詳細な説明

目次1. ダウンロード2. 展開3. Nginxログ関連の設定4. ファイルダウンローダーとして n...

JavaScript における Arguments オブジェクトの使用に関する詳細な説明

目次序文議論の基本概念議論の役割実パラメータと仮パラメータの数を取得する実際のパラメータ値を変更する...

CSS スティッキーレイアウトを使用してヘッダーを上部に配置する方法

適用シナリオ:新しい要件の 1 つはアンケート調査を行うことですが、必然的に多くの質問が含まれ、1 ...

Web ページ制作におけるテーブル属性 CellPad、CellSpace、Border の説明と使用

cellspacing は表内のセル間の距離です。セルパディングは、表のセル内の空白スペースです。一...

MySQLでBLOBデータを処理する方法

具体的なコードは次のとおりです。 パッケージ epoint.mppdb_01.h3c; java.i...

Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...

Vueフロントエンドの効率的な開発のためのレンダリング手順をリストします

v-for ディレクティブリストといえば、ループについても触れなければなりません。v-for 命令は...

Linux環境でよく使われるMySQLコマンドの紹介

mysql コマンドを入力します: mysql -u+(ユーザー名) -p+(パスワード) mysq...

CentOS 7.2 に SuPHP をインストールするための詳細な手順

デフォルトでは、CentOS 7 上の PHP は apache または nobody として実行さ...

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

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