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

jQuery implementiert Warenkorbfunktion

In diesem Artikelbeispiel wird der spezifische Co...

MySQL kontrolliert die Anzahl der Versuche, falsche Passwörter einzugeben

1. So überwachen Sie MySQL-Deadlocks in Produktio...

Eine kurze Analyse des Kimono-Memo-Problems

Heute musste ich nach dem Neustart des Spiels fes...

Detaillierte Analyse der Verwendungs- und Anwendungsszenarien von Slots in Vue

Was sind Slots? Wir wissen, dass in Vue nichts in...

Methode zur Implementierung von Website-Hintergrundmusik

Für einzelne Webmaster war es schon immer das Ziel...

So implementieren Sie einen Kennwortstärke-Detektor in React

Inhaltsverzeichnis Vorwort verwenden Komponentens...

IIS7 IIS8 http springt automatisch zu HTTPS (Port 80 springt zu Port 443)

IIS7 muss bestätigen, ob das pseudostatische Modu...

JS-Implementierung des Karussell-Karussell-Falls

In diesem Artikelbeispiel wird der spezifische JS...

JS implementiert die Benutzerregistrierungsschnittstellenfunktion

In diesem Artikelbeispiel wird der spezifische JS...

Detaillierter Informationsaustausch über das MySQL-Protokollsystem

Jeder, der schon einmal an einem großen System ge...

Detaillierte Erläuterung des Ausführungsplans, Beispiel für einen Befehl in MySQL

Vorwort Der Befehl „Explain“ ist die primäre Mögl...