この記事では、ツリーテーブルを実装するための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 を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Linux インデックスノード inode の詳細な説明
>>: MySQL データベースのスケジュールされたバックアップ スクリプトの共有
目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...
目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...
SELECT ステートメントの完全な構文は次のとおりです。 (7)選択 (8) DISTINCT ...
1. 同じタイプの空の要素を追加し、要素の CSS 属性 clear:both; を設定します。 ...
方法 1: Google の詳細検索を使用します。たとえば、次に示すように.asp?id=9などの ...
TensorFlow をディープラーニングに使うとビデオメモリ不足がよく起こるので、GPU 使用状況...
この記事では、カルーセルマップの効果を実現するためのBootstrapの具体的なコードを参考までに共...
注1: MySQLデータベースへの接続が遅い問題を解決するvim /etc/my.cnfコンテン...
概要: この記事では、Avro データをシリアル化して生成し、FlinkSQL を使用して解析する方...
目次構成nfs サーバー (nfs.skills.com) nfs クライアント (client.s...
1. コンポーネントの実装方法:組件名稱首字母必須大寫1. JS関数を通じてコンポーネントを実装...
MySQL 8.0.22のインストールと設定方法のグラフィックチュートリアル、参考までに、具体的な内...
01 ウィンターフレーク(個人のみ) 02 スノートップキャップ(業務用) 03 モディウス「フリ...
1. はじめにバージョン 5.0 以降でサポートされています。特定の機能を実行するための SQL ス...
目次序文なぜユニットテストを導入するのですか?ユニットテストの概要テスト開発パターン1. テスト駆動...