Vue implementiert Baumtabelle

Vue implementiert Baumtabelle

In diesem Artikelbeispiel wird der spezifische Code von Vue zur Implementierung der Baumtabelle zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt

Die Wirkung ist wie folgt:

Zentriertes Bild:

Der Code lautet wie folgt:

<Vorlage>
  <div Klasse="Baumtabelle">
    <Tabelle>
      <tr>
        <th>Gerätetyp</th>
        <th>Produktname</th>
        <th>Version</th>
        <th>Artikel prüfen</th>
        <th>Unterpunkte prüfen</th>
        <th>Überprüfen Sie die Hauptkategorien</th>
        <th>Unterkategorie Ausrüstung</th>
        <th>Bemerkungen</th>
      </tr>
      <tbody>
        <tr v-for="(Element, Index) in Daten" :key="Index" v-show="Element.Anzeige">
          <td :style="{paddingLeft:item.left}"><span @click="nodeClick(index)" v-if="item.branch" :class="item.expand? 'expand':'collapse'"></span>{{item.type}}</td>
          <td>{{Artikelname}}</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 Typ="Text" v-Modell="Artikel.Remark"></td>
        </tr>
      </tbody>
    </Tabelle>
  </div>
</Vorlage>

<Skript>
/* eslint-deaktivieren */ 
Standard exportieren {
  Name: "Baumtabelle",
  Daten () {
    zurückkehren {
      msg: 'Willkommen bei Ihrer Vue.js-App',
      Daten:[
          {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:'Firewall',name:'CE001',version:'VR001',checkItem:'Element A prüfen',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'3rem',branch:false,expand:true,display:true,id:'1_1_1_1_1',pid:'1_1_1_1',type:'Firewall',name:'CE001',version:'VR001',checkItem:'Element A prüfen',checkSubItem:'Unterelement A prüfen',BigItem:'Softwareversion',smallItem:'Element A prüfen',remark:'Bemerkungsinformationen'},
          {left:'0',branch:true,expand:true,display:true,id:'2',pid:'0',type:'Datenaustauschzentrum',name:'',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'0.5rem',branch:true,expand:true,display:true,id:'2_1',pid:'2',type:'Datenaustauschzentrum',name:'CE001',version:'',checkItem:'',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'1rem',branch:true,expand:true,display:true,id:'2_1_1',pid:'2_1',type:'Datenaustauschzentrum',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:'Datenaustauschzentrum',name:'CE001',version:'VR001',checkItem:'Element A prüfen',checkSubItem:'',BigItem:'',smallItem:'',remark:''},
          {left:'3rem',branch:false,expand:true,display:true,id:'2_1_1_1_1',pid:'2_1_1_1',type:'Data Exchange Center',name:'CE001',version:'VR001',checkItem:'Element A prüfen',checkSubItem:'Unterelement A prüfen',BigItem:'Softwareversion',smallItem:'Element A prüfen',remark:'Bemerkungsinformationen'},
        ],
    }
  },
  Methoden:{
    KnotenKlick(Index){
      dies.datas[index].expand = dies.datas[index].expand ? false : wahr
      let pid = this.datas[index].id 
      wenn (diese.datas[index].expand) {
        für (lass i = Index +1; i < this.datas.length; i++) {
          lass reg = neuer RegExp('^'+pid)
          wenn (diese.datas[i].pid == pid) {
            diese.datas[i].display = true
            diese.datas[i].expand = false 
          }sonst wenn(reg.test(this.datas[i].id)){
            diese.datas[i].display = false
            diese.datas[i].expand = false
          }anders{
            brechen
          }
        }
      }anders{
        für (lass i = Index +1; i < this.datas.length; i++) {
          lass reg = neuer RegExp('^'+pid)
          wenn(reg.test(this.datas[i].id)){
            diese.datas[i].display = false
            diese.datas[i].expand = false 
          }anders{
            brechen
          }
        }
      }
      // für (let i = index +1;i<this.datas.length;i++){
      // lass reg = neuer RegExp('^'+pid)
      // wenn(reg.test(this.datas[i].id)){
      // wenn(this.datas[index].expand){
      // diese.datas[i].display = true
      // }anders{
      // diese.datas[i].display = false
      // diese.datas[i].expand = false 
      // }
      // }
      // }
    }
  }
}
</Skript>
<!-- Fügen Sie das Attribut „scoped“ hinzu, um CSS nur auf diese Komponente zu beschränken -->
<Stilbereich>
th,td{
  Breite: 150px;
}
td:erstes-Kind{
  Textausrichtung: links;
}
td Spanne {
  Anzeige: Inline-Block;
  Breite: 1,5rem;
  Höhe: 1rem;
}
td span.expand{
  Hintergrundbild: URL('./folder_open.png');
}
td span.collapse{
  Hintergrundbild: URL('./folder.png');
}
</Stil>

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Vue+Element-UI realisiert Baumtabelle
  • Detaillierte Erklärung der Vue-CLI+Element-UI-Baumtabelle (Zwischensumme der mehrstufigen Tabelle)
  • Beispielcode für die Implementierung einer Baumtabelle mit Kontrollkästchen unter Verwendung von Vue+Element UI
  • Detaillierte Erläuterung des Beispiels einer verschiebbaren Baumtabelle basierend auf Vue

<<:  Detaillierte Erläuterung des Linux-Indexknoten-Inode

>>:  Geplantes Teilen von Skripten für MySQL-Datenbanksicherungen

Artikel empfehlen

Lombok-Implementierung JSR-269

Vorwort Einführung Lombok ist ein praktisches Too...

So zeigen Sie den Prozentsatz und die ersten paar Prozent in MySQL an

Inhaltsverzeichnis Erfordern Implementierungscode...

Serviceverwaltung der Quellpaketinstallation unter Linux

Inhaltsverzeichnis 1. Startverwaltung des Quellpa...

js verwendet Cookies, um die Seitenvorgänge des Benutzers zu speichern

Vorwort Während des Entwicklungsprozesses stoßen ...

CSS3 realisiert den grafischen Fallanimationseffekt

Sehen Sie zuerst den Effekt Implementierungscode ...

Ein paar Dinge zu favicon.ico (am besten im Stammverzeichnis ablegen)

Öffnen Sie eine beliebige Webseite, zum Beispiel ...

So ändern Sie den Standardzeichensatz von MySQL auf dem MAC auf UTF-8

1. Überprüfen Sie den Zeichensatz des standardmäß...

JDBC-Erkundung SQLException-Analyse

1. Übersicht über SQLException Wenn bei der Verwe...

Einige Vorschläge zur Lesbarkeit des Vue-Codes

Inhaltsverzeichnis 1. Nutzen Sie Komponenten sinn...

So fügen Sie dem Tomcat-Dienst einen Java-Startbefehl hinzu

Mein erstes Serverprogramm Ich lerne gerade, Onli...