Vueはツリーテーブルを実装する

Vueはツリーテーブルを実装する

この記事では、ツリーテーブルを実装するためのVueの具体的なコードを例として紹介します。具体的な内容は次のとおりです。

効果は以下のとおりです。

中央の画像:

コードは次のとおりです。

<テンプレート>
  <div class="treeTable">
    <テーブル>
      <tr>
        <th>デバイスタイプ</th>
        <th>製品名</th>
        <th>バージョン</th>
        <th>チェック項目</th>
        <th>サブ項目を確認する</th>
        <th>主要カテゴリを確認する</th>
        <th>機器サブカテゴリ</th>
        <th>備考</th>
      </tr>
      <t本文>
        <tr v-for="(item,index) データ内" :key="index" v-show="item.display">
          <td :style="{paddingLeft:item.left}"><span @click="nodeClick(index)" v-if="item.branch" :class="item.expand? 'expand':'collapse'"></span>{{item.type}}</td>
          <td>{{アイテム名}}</td>
          <td>{{item.version}}</td>
          <td>{{item.checkItem}}</td>
          <td>{{item.checkSubItem}}</td>
          <td v-if="item.branch">{{item.BigItem}}</td>
          <td v-else><input type="text" v-model="item.BigItem"></td>
          <td v-if="item.branch">{{item.smallItem}}</td>
          <td v-else><input type="text" v-model="item.smallItem"></td>
          <td v-if="item.branch">{{item.remark}}</td>
          <td v-else><input type="text" v-model="item.remark"></td>
        </tr>
      </tbody>
    </テーブル>
  </div>
</テンプレート>

<スクリプト>
/* eslint を無効にする */ 
エクスポートデフォルト{
  名前: 'treeTable',
  データ () {
    戻る {
      メッセージ: 'Vue.js アプリへようこそ',
      データ:[
          {left:'0'、branch:true、expand:true、display:true、id:'1'、pid:'0'、type:'Firewall'、name:'',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'0.5rem'、branch:true、expand:true、display:true、id:'1_1'、pid:'1'、type:'Firewall'、name:'CE001'、version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1rem'、branch:true、expand:true、display:true、id:'1_1_1'、pid:'1_1'、type:'Firewall'、name:'CE001'、version:'VR001'、checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1.5rem'、branch:true、expand:true、display:true、id:'1_1_1_1'、pid:'1_1_1'、type:'ファイアウォール'、name:'CE001'、version:'VR001'、checkItem:'チェック項目 A'、checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'3rem'、branch:false、expand:true、display:true、id:'1_1_1_1_1'、pid:'1_1_1_1'、type:'ファイアウォール'、name:'CE001'、version:'VR001'、checkItem:'チェック項目 A'、checkSubItem:'チェックサブ項目 A'、BigItem:'ソフトウェアバージョン'、smallItem:'チェック項目 A'、remark:'備考情報'}、
          {left:'0'、branch:true、expand:true、display:true、id:'2'、pid:'0'、type:'データ交換センター'、name:'',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'0.5rem',branch:true,expand:true,display:true,id:'2_1',pid:'2',type:'データ交換センター',name:'CE001',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1rem'、branch:true、expand:true、display:true、id:'2_1_1'、pid:'2_1'、type:'データ交換センター'、name:'CE001'、version:'VR001'、checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1.5rem',branch:true,expand:true,display:true,id:'2_1_1_1',pid:'2_1_1',type:'データ交換センター',name:'CE001',version:'VR001',checkItem:'チェック項目A',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'3rem',branch:false,expand:true,display:true,id:'2_1_1_1_1',pid:'2_1_1_1',type:'データ交換センター',name:'CE001',version:'VR001',checkItem:'チェック項目A',checkSubItem:'チェックサブ項目A',BigItem:'ソフトウェアバージョン',smallItem:'チェック項目A',remark:'備考情報'},
        ]、
    }
  },
  方法:{
    ノードクリック(インデックス){
      this.datas[index].expand = this.datas[index].expand ? false : true
      pid = this.datas[index].idとします。 
      if (this.datas[index].expand) {
        for(let i = index +1;i<this.datas.length;i++){
          reg = new RegExp('^'+pid) とします。
          if (this.datas[i].pid == pid) {
            this.datas[i].display = true
            this.datas[i].expand = false 
          }そうでない場合、reg.test(this.datas[i].id)){
            this.datas[i].display = false
            this.datas[i].expand = false
          }それ以外{
            壊す
          }
        }
      }それ以外{
        for(let i = index +1;i<this.datas.length;i++){
          reg = new RegExp('^'+pid) とします。
          if(reg.test(this.datas[i].id)){
            this.datas[i].display = false
            this.datas[i].expand = false 
          }それ以外{
            壊す
          }
        }
      }
      // for(let i = index +1;i<this.datas.length;i++){
      // reg = new RegExp('^'+pid) とします
      // if(reg.test(this.datas[i].id)){
      // if(this.datas[index].expand){
      // this.datas[i].display = true
      // }それ以外{
      // this.datas[i].display = false
      // this.datas[i].expand = false 
      // }
      // }
      // }
    }
  }
}
</スクリプト>
<!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します -->
<スタイルスコープ>
th、td{
  幅: 150ピクセル;
}
td:最初の子{
  テキスト配置: 左;
}
td スパン{
  表示: インラインブロック;
  幅: 1.5rem;
  高さ: 1rem;
}
td span.expand{
  背景画像: url('./folder_open.png');
}
td span.collapse{
  背景画像: url('./folder.png');
}
</スタイル>

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

以下もご興味があるかもしれません:
  • Vue+element UI でツリーテーブルを実現
  • vue-cli+element-ui ツリーテーブル(多階層テーブル トス小計)の詳しい説明
  • vue+element UI を使用してチェックボックス付きのツリーテーブルを実装するためのサンプルコード
  • Vue ベースのドラッグ可能なツリーテーブルの例の詳細な説明

<<:  Linux インデックスノード inode の詳細な説明

>>:  MySQL データベースのスケジュールされたバックアップ スクリプトの共有

推薦する

MySQL mysqladmin クライアントの使用の概要

目次1. サーバーの状態を確認します。 2. ルートパスワードを変更します。 3. mysqlser...

docker-maven-pluginプラグインは対応するjarパッケージを取得できません

docker-maven-plugin プラグインを使用する場合、Maven は対応する jar パ...

MySQL のインデックスと制約の例文

外部キーテーブルの主キーがどのテーブルの外部キーであるかを照会する 選択 テーブル名、 列名、 制約...

実行中の Docker コンテナにボリュームを動的に追加する方法

以前、Docker コンテナの起動後にボリュームをマウントできるかどうか尋ねられたことがあります。m...

JavaScript における Promise の詳細な説明

目次Promise の基本的な使用法: 1. Promiseオブジェクトを作成する2. プロミス方式...

ReactでCSSスタイルを動的に変更する2つの方法の詳細な説明

最初の方法: デモとしてボタンをクリックしてテキストを表示または非表示にするクラスを動的に追加します...

MySql インデックスはクエリ速度を向上させる一般的な方法のコード例

インデックスを使用してクエリを高速化する1. はじめにWeb 開発には、ビジネス テンプレート、ビジ...

CSSを使用してダークモードとブライトモードを切り替える

Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...

Linux プロセスが占有するポート番号を表示する 6 つの方法

Linux システム管理者にとって、サービスがポートに正しくバインドされているか、またはポートをリッ...

JavaScript で charAt() を使用して、最も頻繁に出現する文字とその出現回数をカウントする方法を教えます。

前回は、JavaScript の charAt() メソッドの使い方を紹介しました。今日は、最も多く...

MySQL の昇順および降順データソートの実装

データの昇順、降順ソート1. フィールド名による単一フィールドのソート順機能:どのフィールドを基準に...

MySQLデータベースは何をするのか

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

フレックスレイアウトにおけるflex-growとflex-shrinkの計算方法の詳しい説明

CSS のFlex(彈性布局)すると、Web ページのレイアウトを柔軟に制御できます。Flex Fl...

MySQLはIDに適切なデータ型を選択します

目次分散IDソリューションの概要データベース自動増分IDデータベースマルチマスターモード数値セグメン...

IIS サーバーから apk ファイルをダウンロードする際の 404 エラーの解決策

最近、IIS をサーバーとして使用すると、apk ファイルがサーバーにアップロードされましたが、ダウ...