In diesem Artikel wird hauptsächlich die Breadcrumb-Funktion vorgestellt, die auf dem Matching von Vue-Router basiert, und mit Ihnen geteilt. Die Einzelheiten sind wie folgt: Wie im obigen Bild gezeigt, handelt es sich hierbei um einen üblichen Breadcrumb-Effekt. Im Allgemeinen weist der Inhalt von Breadcrumbs eine bestimmte hierarchische Beziehung auf. Nehmen wir das obige Bild als Beispiel: Rufen Sie zuerst die Homepage auf, klicken Sie dann auf die linke Navigation, um die Aktivitätslistenseite unter Aktivitätsverwaltung aufzurufen, und klicken Sie dann auf ein Datenelement, um die Aktivitätsdetailseite aufzurufen. Dies ist genau dasselbe Prinzip wie das Ergebnis, das durch das Mached-Attribut des Vue-Routers erzielt wird, sodass auf dieser Grundlage der Breadcrumb-Effekt erzielt werden kann! Hier habe ich die Breadcrumb-Komponente und die Navigationsmenü-Komponente von Elementui verwendet. Hier ist das endgültige Effektbild: Routing-KonfigurationProjektstruktur: Die seitliche Navigationsleiste wird auf der Startseite sowie auf den Seiten für elektronische und digitale Inhalte sowie für Kleidung und Schuhe angezeigt. Daher habe ich eine Layoutkomponente erstellt, die Komponenten dieser drei Routen auf die Komponente gerichtet und die Navigationsleiste und die Breadcrumbs in die Layoutkomponente geschrieben. Da die Implementierung dieser Funktion von der hierarchischen Verschachtelungsbeziehung der Routen abhängt, muss die Konfiguration der Routen im Voraus geplant werden. Meine Routenkonfiguration sieht wie folgt aus: const Routen = [ //Leere Route abgleichen und zur Root-Route umleiten { Weg:'', Umleitung: '/home', Meta:{ showInbreadcrumb:false } }, //Stammroute { Pfad: „/home“, Komponente: ()=>import('@/views/layout/index.vue'), Name: 'Heimat', Meta:{ Titel:"Home", showInbreadcrumb:true } }, //Elektronisch digital { Pfad: '/Elektronik', Name:'Elektronisch Digital', Komponente: ()=>import('@/views/layout/index.vue'), Weiterleitung: '/elektronik/computer', Meta:{ Titel:"Elektronisch Digital", showInbreadcrumb:true }, Kinder:[ { Pfad: „Computer“, Name: 'Computer', Komponente()=>Import('@/views/electronics/children/computer/index.vue'), Meta:{ Titel:"Computer", showInbreadcrumb:true } }, { Pfad: „Telefon“, Name: „Mobiltelefon“, Komponente: ()=>import('@/views/electronics/children/phone/index.vue'), Meta:{ Titel:"Mobiltelefon", showInbreadcrumb:true } }, { Pfad: „tv“, Name:'Fernseher', Komponente: ()=>import('@/views/electronics/children/tv/index.vue'), Meta:{ Titel:"Fernseher", showInbreadcrumb:true } } ] }, //Kleidung, Schuhe und Hüte { Pfad: '/Kleidung', Name:'Kleidung, Schuhe und Hüte', Komponente: ()=>import('@/views/layout/index.vue'), Weiterleitung: '/Kleidung/Oberteile', Meta:{ Titel: "Kleidung, Schuhe und Hüte", showInbreadcrumb:true }, Kinder:[ { Pfad: „tops“, Name:'Oberteile', Komponente: ()=>import('@/views/clothing/children/tops/index.vue'), Meta:{ Titel:"Oberteile", showInbreadcrumb:true } }, { Pfad: „unterer“, Name:'Unterteile', Komponente: ()=>import('@/views/clothing/children/lower/index.vue'), Meta:{ Titel:"Unterteile", showInbreadcrumb:true } }, { Pfad: „Schuhe“, Name: 'Schuhe', Komponente: ()=>import('@/views/clothing/children/shoes/index.vue'), Meta:{ Titel: „Schuhe“, showInbreadcrumb:true } } ] }, //Setze es ans Ende. Wenn keine der vorherigen Routen übereinstimmt, wird diese Route übereinstimmen und zur Stammroute umgeleitet { Weg:'*', umleiten:'/', Meta:{ showInbreadcrumb:false } }, ] Hier habe ich die Routen für Zuhause, Elektronik, Kleidung, Schuhe und Hüte konfiguriert. Diese drei sind Routen der ersten Ebene, darunter haben Elektronik, Digital und Kleidung, Schuhe und Hüte Routen der zweiten Ebene. In Meta habe ich die Daten angepasst. ShowInbreadcrumb wird verwendet, um zu bestimmen, ob in den Breadcrumbs angezeigt werden soll. Titel ist der in den Breadcrumbs angezeigte Name. Abrufen von Routinginformationen Vorlagenteil: ///src/views/layout/index.vue <Vorlage> <div Klasse="Layout"> <!-- Seitliche Navigationsleiste --> <div Klasse="Seitenmenü"> <el-Menü Standardmäßig aktiv = "0" Klasse="el-menu-vertical-demo" > <div v-for="(item,index) in routes" :key="index" :index="index+''"> <!-- Kein sekundäres Menü --> <el-menu-item :index="index+''" v-if="!item.children"> <router-link :to="{name:item.name}">{{item.meta.title}}</router-link> </el-Menüelement> <!-- Mit sekundärem Menü --> <el-Untermenü :index="index+''" v-else> <template slot="title">{{item.meta.title}}</template> <el-menu-item v-for="(item_,index_) in item.children" :key="index_" :index="index+'-'+index_"> <router-link :to="{name:item_.name}">{{item_.meta.title}}</router-link> </el-Menüelement> </el-Untermenü> </div> </el-Menü> </div> <div Klasse="Inhalt"> <!-- Brotkrümel --> <div Klasse="Brotkrümel"> <el-breadcrumb-Trennzeichen-Klasse="el-icon-arrow-right"> <el-breadcrumb-item v-for="(item,index) in breadcrumb" :key="index" :to="{ path: item.path}">{{item.meta.title}}</el-breadcrumb-item> </el-breadcrumb> </div> <!-- Routing-Ausgang --> <Router-Ansicht></Router-Ansicht> </div> </div> </Vorlage> js-Teil: Standard exportieren { Daten(){ zurückkehren { } }, berechnet:{ // Seitennavigation Datenrouten(){ // Alle Routing-Informationen aus $router.options abrufen und filtern. Return this.$router.options.routes.filter((item)=>{ return item.meta.showInbreadcrumb }); }, // Breadcrumb-Daten breadcrumb(){ // Filtern Sie gemäß dem Feld „showInbreadcrumb“ im Meta der Routenkonfiguration. let matchedArr = this.$route.matched.filter((item)=>{ return item.meta.showInbreadcrumb} ); // Da die Startseite etwas Besonderes ist, muss sie in den Breadcrumbs immer zuerst angezeigt werden. Wenn keine Routing-Informationen zur Startseite vorhanden sind, fügen Sie diese manuell vorne hinzu, wenn (matchedArr [0].meta.title !== 'Startseite') { matchedArr.unshift( { Pfad: „/home“, Meta:{ Titel:"Home", showInbreadcrumb:true } }, ) } gib matchedArr zurück; }, } } Hinweis: Nachdem Sie this.$route.matched erhalten haben, können Sie das Ergebnis nicht direkt anhängen und dann filtern, da sonst die Seite durcheinander geraten und ein Fehler gemeldet wird. Sie sollten zuerst filtern, wodurch ein neues Array zurückgegeben wird, und dann die Homepage-Informationen beurteilen und anhängen Endergebnis Dies ist das Ende dieses Artikels über die Implementierung der Breadcrumbs-Funktion basierend auf Vue-Router-Matching. Weitere relevante Vue-Router-Matching-Breadcrumbs-Inhalte finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Lösung für das Timeout-Problem bei der Installation von Docker-Compose mit PIP
>>: Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22
Ersetzen Sie ihn durch den optimalen Datenbankver...
1. Was ist Als Auszeichnungssprache hat CSS eine ...
Testen Sie die Effizienz des Löschens einer große...
Hintergrund In letzter Zeit werde ich in Intervie...
Die schlechteste Option besteht darin, die Ergebn...
Beim Einsatz von Docker in einer Produktionsumgeb...
In diesem Artikel wird der spezifische Code von J...
Da PostgreSQL kompiliert und installiert ist, müs...
Inhaltsverzeichnis 1. Verwenden Sie JavaScript, u...
yum install httpd php mariadb-server –y Notieren ...
Die Pseudoklasse „Before/After“ entspricht dem Ei...
Inhaltsverzeichnis 1. MySQL-Datenstruktur 2. Die ...
In diesem Artikel werden die Schwierigkeiten und ...
Inhaltsverzeichnis Ergebnisse erzielen Einführung...
Der Installationsprozess von MySQL 8.0 Windows Zi...