この記事では、ツリーテーブルを実装するための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 データベースのスケジュールされたバックアップ スクリプトの共有
この記事では、例を使用して、MySQL ストアド プロシージャの原理と使用方法を説明します。ご参考ま...
目次1. はじめに2. インストール3. 基本的な使い方3.1、-rパラメータ3.2、-aパラメータ...
MySQL データベースがエラー 1045 (28000): ユーザー 'ODBC'...
Docker イメージのダウンロードが停止したり、遅すぎたりするネットでいろいろな方法を検索しました...
ドロップダウン メニューも実生活では非常に一般的です。実装に使用される js コードは、タブ選択やア...
ほとんどの人は、サーバーサイド レンダリング (SSR と呼んでいます) の概念について聞いたことが...
目次1. オープンソースの倉庫管理ツール Harbor 2 インストール2.1 DockerとDoc...
1. どのような問題に直面しましたか?標準 SQL では、通常、次の SQL 挿入ステートメントを記...
新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...
証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...
プロジェクトの背景最近、webpackのバージョンが古いプロジェクトがあります。 リーダー層では今の...
MySQL は、myisam、innodb、memory、archive、example など、多く...
目次ReactHook とは何ですか? Reactは現在フックを提供している1. 使用状態2.use...
コードをコピーコードは次のとおりです。 <iframe id="myFrameId&...
異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。 java.lang....