In diesem Artikelbeispiel wird der spezifische Code von vue ElementUI zur Implementierung eines asynchronen Ladebaums zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt Routing-Datei ändern Liste aus '@/components/list.vue' importieren importiere Add aus '@/components/add.vue' Importiere Tree aus '@/components/tree.vue' importiere AsynTree aus '@/components/asyntree.vue' Standard exportieren{ Routen:[ {Pfad:"/Liste",Komponente:Liste}, {Pfad:"/Hinzufügen",Komponente:Hinzufügen}, {Pfad:"/add/:id",Komponente:Hinzufügen}, {Pfad:"/Baum",Komponente:Baum}, {Pfad:"/asyntree",Komponente:AsynTree} ] } Homepage app.vue <Vorlage> <div id="app"> <router-link to="/add">Hinzufügen</router-link> <router-link to="/list">Liste</router-link> <router-link to="/tree">Baumstruktur</router-link> <router-link to="/asyntree">Asynchrone Baumstruktur</router-link> <Router-Ansicht></Router-Ansicht> </div> </Vorlage> <Skript> Liste aus „./components/list.vue“ importieren Standard exportieren { Name: "App", Komponenten: Liste } } </Skript> <Stil> #app { Schriftfamilie: „Avenir“, Helvetica, Arial, serifenlos; -webkit-font-smoothing: Kantenglättung; -moz-osx-font-smoothing: Graustufen; Textausrichtung: zentriert; Farbe: #2c3e50; Rand oben: 60px; } </Stil> Asynchrones Laden der Baumseite <Vorlage> <el-container> <el-aside Breite="200px"> <el-tree ref="Baum" :data="Daten" faul Kontrollkästchen anzeigen Knotenschlüssel="id" streng prüfen :load="Ladeknoten" :props="StandardProps" @node-click="nodeclick"> </el-Baum> </el-beiseite> <el-main> <el-form :model="Typinfo" Klasse="Demo-Formular-Inline"> <el-form-item label="Ich würde"> <el-input v-model="typeinfo.id" schreibgeschützt></el-input> </el-form-item> <el-form-item label="Kategoriename"> <el-input v-model="typeinfo.label" placeholder="Kategoriename"></el-input> </el-form-item> <el-form-item label="Seriennummer"> <el-input v-model="typeinfo.seqno" placeholder="Seriennummer"></el-input> </el-form-item> <el-form-item label="Übergeordnete ID"> <el-input v-model="typeinfo.pid" schreibgeschützt></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="dosave">Speichern</el-button> <el-button type="primary" @click="dochildsave">Knoten hinzufügen</el-button> </el-form-item> </el-form> </el-main> </el-container> </Vorlage> <Skript> Axios von „Axios“ importieren Standard exportieren { Daten() { zurückkehren { data:[], //Datenmodell des Baumobjekts defaultProps: { //Korrespondenz der Eigenschaften des Baumobjekts children: 'children', Bezeichnung: „Bezeichnung“ }, typeinfo: {//Produktklassifizierungs-Entitätsobjekt-ID:'', pid:'', Etikett: '', Sequenznummer: '' } } }, Methoden: { Knoten laden(Knoten, auflösen){ //Wenn Sie den Knoten der ersten Ebene erweitern, laden Sie die Knotenliste der ersten Ebene aus dem Hintergrund, wenn (node.level==0) { dies.loadfirstnode(auflösen); } //Wenn Sie Knoten anderer Ebenen erweitern, laden Sie die Knotenliste der nächsten Ebene dynamisch aus dem Hintergrund, wenn (node.level>=1) { dies.loadchildnode(Knoten,auflösen); } }, //Lade den Knoten der ersten Ebene loadfirstnode(resolve){ axios.get('http://localhost:6060/loadtype') .dann(Funktion(bzw.){ auflösen(bzw.Daten); }) }, //Baumkomponente aktualisieren refreshtree(){ var _this = dies; axios.get('http://localhost:6060/loadtype') .dann(Funktion(bzw.){ _diese.Daten = bzw.Daten; }) }, //Lade die Sammlung untergeordneter Knoten des Knotens loadchildnode(node,resolve){ axios.get('http://localhost:6060/loadtypechild?pid='+node.data.id) .dann(Funktion(bzw.){ auflösen(bzw.Daten); }) }, //Klicken Sie auf das Ereignis, das auf dem Knoten ausgelöst wird. Übergeben Sie drei Parameter. Das Datenobjekt verwendet den ersten Parameter nodeclick(data,dataObj,self). { //Alarm(Daten.label+",id="+Daten.id); dies.typeinfo.id=data.id; dies.typeinfo.pid=data.pid; dies.typeinfo.label=Datenlabel; diese.typeinfo.seqno=Daten.seqno; }, //Klassifizierungsmethode speichern dosave() { var _this = dies; axios.post('http://localhost:6060/savetype',diese.typeinfo) .dann(Funktion(bzw.){ wenn(bzw.Daten) _this.refreshtree(); }) }, //Unterklassifizierungsmethode speichern dochildsave() { //Beurteilen, ob im linken Baum ein Knoten ausgewählt ist. componentvar cnt=this.$refs['tree'].getCheckedNodes().length; wenn(cnt!=1) { this.$message('Sie müssen einen eindeutigen übergeordneten Knoten auswählen'); zurückkehren; } //Holen Sie sich das Baumobjekt über this.$refs['tree'], wobei tree das Ref-Attribut der Baumkomponente ist var dataObj = this.$refs['tree'].getCheckedNodes()[0]; diese.typeinfo.id=''; dies.typeinfo.pid=dataObj.id; var _this = dies; axios.post('http://localhost:6060/savetype',diese.typeinfo) .dann(Funktion(bzw.){ wenn(bzw.Daten) _this.refreshtree(); }) } } } </Skript> Hintergrund-Controller @RequestMapping("/Ladetyp") @AntwortBody öffentliche Liste<TypeInfo> getTypeJson() { Liste<Typinfo> rtn = getFirstNode(); Rückflug rtn; } @RequestMapping("/LadetypKind") @AntwortBody öffentliche Liste<TypeInfo> getTypeByPid(Integer pid) { System.out.println("pid==="+pid); Liste<Typinfo> rtn = addsrv.getTypeList(pid); Rückflug rtn; } private Liste<TypeInfo> getFirstNode() { TypeInfo root = addsrv.getRootType(); Liste<TypeInfo> ersteListe = addsrv.getTypeList(root.getId()); für(TypeInfo ti:firstList) recurseNode(ti); gib die erste Liste zurück; } private void recurseNode(TypeInfo ti) { Liste<TypeInfo> untergeordnete Elemente = addsrv.getTypeList(ti.getId()); System.out.println("ti.id"+ti.getId()+",children="+children); wenn (Kinder == null || Kinder.Größe() == 0) zurückkehren; ti.setChildren(Kinder); für(TypeInfo chd:children) { recurseNode(chd); } } @RequestMapping("/Speichertyp") @AntwortBody öffentlicher Boolean-Speichertyp(@RequestBody TypeInfo ti) { versuchen { Integer-ID = ti.getId(); wenn(id != null) addsrv.updateType(ti); anders { addsrv.saveType(ti); } gibt true zurück; } Fang (Ausnahme e) { gibt false zurück; } } 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:
|
<<: Detaillierte Erläuterung des Index und der Speicherstruktur der MySQL InnoDB-Engine
1. Bereiten Sie eine neue Festplatte vor und form...
1. Schauen wir uns zunächst eine Anweisung zur Ta...
1. Spread-Operator Der Spread-Operator besteht au...
Wenn das Token abläuft, aktualisieren Sie die Sei...
Hilfsfunktion mapGetters mapGetters ordnet die Ge...
Inhaltsverzeichnis Konfigurationsbefehlsschritte ...
Einführung Das Docker-Compose-Projekt ist ein off...
Originaldaten und Zieldaten SQL-Anweisungen imple...
Verwenden Sie CSS, um zu verhindern, dass Lightbo...
Aus Hardwaregründen kann es vorkommen, dass die M...
Was soll ich tun, wenn Linux nicht alle Befehle u...
Was ist das? GNU Parallel ist ein Shell-Tool zum ...
Einführung Die aktuellen Anforderungen des Untern...
Einführung Beginnen wir mit unserem Inhalt. Ich g...
Vorwort Bei der Linux-Kernel-Programmierung werde...