Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 9797|Antwort: 0

[Vue] Vue Technischer Aufkleber

[Link kopieren]
Veröffentlicht am 25.07.2019 16:12:31 | | |

Zunächst einmal die letzte Welle von Renderings:

Grundelemente

Zunächst sind die Elemente, die der Pager-Komponente (im Folgenden als "Pager-Komponente" bezeichnet) gemeinsam gehören:

  • Früher

  • Seite 1

  • Die in der Mitte gezeigte Seitenzahl

  • Letzte Seite

  • Nächster


Die für die Initialisierung erforderlichen Konfigurationen sind:

  • totalPage

  • initPage

  • showPrev (ob die vorherige Seite gezeigt werden soll)

  • showNext (ob die nächste Seite gezeigt werden soll)

  • showItems (ein paar Seiten in der Mitte)

  • showJump (ob der Sprung zu der Seite angezeigt werden soll)


Diese können über Vue-Requisiten empfangen werden.

Zusätzlich muss die Pager-Komponente selbst eine aktuelle Seite haben, die die aktuelle Seite aufzeichnet, das Seitenarray wird verwendet, um die in der Mitte angezeigte Seitenzahl aufzunehmen, und die JumpPage bindet die Sprungseitennummer-Eingabe.

Grundlegende Realisierung

Der entsprechende Code lautet:



  • <template>



  •     <div class="pager-wrapper" v-if="totalPage > 0">



  •         <div class="pager-pages">



  •             <a v-show="currentPage > 1 & showPrev" @click="go(currentPage - 1)" > die vorherige Seite</a>



  •             <a :class="{active: currentPage == 1 ? true : false}" @click="go(1)">1</a>



  •             <starke V-Show="Seiten[0] > 2">...</strong>



  •             <a v-for="Page in Pages" :class="{active: currentPage == page ? true : false}" @click="go(page)">{{page}}</a>



  •             <strong v-show="pages[pages.length-1] < totalPage - 1">...</strong>



  •             <a v-if="totalPage > 1" :class="{active: currentPage == totalPage ? true : false}" @click="go(totalPage)">{{totalPage}}</a>



  •             <a v-show="currentPage < totalPage && showNext" @click="go(currentPage + 1)" > nächste Seite</a>



  •         </div>



  •         <div v-if="showJump" v-show="totalPage > 1" class="pager-jump">



  •             <span>Total <em class="jump-total">{{totalPage}}</em> Seite, springen Sie zur</span>



  •             <Eingabetyp="number" min="1" :max="totalPage" v-model="jumpPage" Klasse="jump-input">



  •             <span>Seite</span>



  •             <a @click="go(jumpPage)" > bestimmt</a>



  •         </div>



  •     </div>



  • </template>



  • <script>



  •   Export Standard {



  •         Requisiten: {



  •             totalPage: { // Gesamtanzahl der Seiten



  •                 Typ: Nummer,



  •                 Standard: 1,



  •                 Erforderlich: Wahr



  •             },



  •             showItems: { // Anzahl der angezeigten Seiten, z.B.: 1 ... 34[5]67 ... 10



  •                 Typ: Nummer,



  •                 Standard: 5



  •             },



  •             showPrev: { // ob man "Previous" zeigen soll.



  •                 Typ: Boolesch,



  •                 Standard: wahr



  •             },



  •             showNext: { // Ob man "Next" zeigen soll



  •                 Typ: Boolesch,



  •                 Standard: wahr



  •             },



  •             showJump: { // ob man "Jump" zeigen soll.



  •                 Typ: Boolesch,



  •                 Standard: wahr



  •             },



  •             initPage: {



  •                 Typ: Nummer,



  •                 Standard: 1



  •             }



  •         },



  •         data () {



  •             Rückkehr {



  •                 currentPage: 0,



  •                 Seiten: [],



  •                 jumpPage: 0,



  •             }



  •         },



  •         created() {// currentPage-Zuweisung bei der Initialisierung



  •             this.currentPage = this.initPage



  •         }



  •         Methoden: {



  •             go (Seite) {



  •                 if(Seite < 1) {



  •                     Seite = 1



  •                 }



  •                 if(Seite > this.totalPage) {



  •                     Seite = this.totalPage



  •                 }



  •                 if(page === this.currentPage) {



  •                     Rückgabe



  •                 }



  •                 this.currentPage = parseInt(page,10)



  •                 this.$emit('go-page',{



  •                     Seite: das.heutePage



  •                 })



  •             }



  •         },



  •         ansehen: {



  •             currentPage (newVal) {



  •                 this.jumpPage = newVal



  •             },



  •             initPage (newVal) {



  •                 if(this.currentPage !== newVal) {



  •                     this.currentPage = newVal



  •                 }



  •             }



  •         }



  •     }



  • </script>


Der nächste Schritt ist, wie man den Wert des Seitenarrays bekommt. Da Seiten immer eng mit der aktuellen Seite und den showItems, die in der Konfiguration angezeigt werden müssen, verbunden sind, ist es durchaus möglich, Seiten auf eine berechnete Eigenschaft umzuwandeln:



  • computed: {



  •     Seiten () {



  •         Das Seitenzahlen-Array wird basierend auf den Start- und Endseitenzahlen ermittelt



  •         let getPages = (start,end) => {



  •             if(start <= 1 || start > end || start >= this.totalPage) {



  •                 Start = 2



  •             }



  •             if(end >= this.totalPage || end < start || end <= 1) {



  •                 Ende = dies.totalSeite - 1



  •             }



  •             Lass arr = []



  •             for(let i = start; I <= Ende; i++) {



  •                 arr.push(i)



  •             }



  •             Rückkehr ARR



  •         }



  •         let counts = this.showItems



  •         if(this.totalPage < zählt + 2) {



  •             zurück getPages(2,this.totalPage)



  •         } sonst {



  •             if(this.currentPage <= Math.ceil(counts/2)) {



  •                 Zurück getPages(2,Counts)



  •             } sonst wenn(this.currentPage >= this.totalPage - Math.floor(counts/2)) {



  •                 return getPages(this.totalPage + 1 - counts,this.totalPage - 1)



  •             } sonst {



  •                 lass die Hälfte = Math.ceil(counts/2) - 1



  •                 let end = this.currentPage + half



  •                 wenn(zählt % 2 === 0) {



  •                     Ende++



  •                 }



  •                 return getPages(this.currentPage - half,end)



  •             }



  •         }



  •     }



  • }


Funktionale Entwicklung

An diesem Punkt ist im Grunde eine gewöhnliche Page-Turning-Komponente implementiert (der Stil kann eigenständig angepasst werden). Allerdings gibt es oft (insbesondere einige Management-Erfahrungen) in Kombination mit vue-router zur Erstellung eines SPA meist folgende Anforderungen:

Nachdem du zu einer Seite in einer bestimmten Liste geblättert hast, klickst du auf einen Eintrag, um zur Bearbeitungsseite zu gelangen, und nach dem Bearbeiten möchtest du vor dem Sprung zur Seite zurückkehren können.

Diese Anforderung ist nicht sehr praktisch umzusetzen, wenn man nur die oben genannte Pager-Komponente verwendet. Manche sagen vielleicht, dass es in Ordnung ist, Vuex zu kombinieren, aber in diesem Fall ist es notwendig, die Seitenzahl vor dem Sprung im Bundesstaat zu notieren. Wenn es viele Seitenumblätterlisten gibt, ist es natürlich nicht elegant, mehrere Seiten aufzunehmen.

Aufgrund der Eleganz der Vue-Router-Implementierung ist es jedoch einfach, die oben genannten Anforderungen zu erfüllen:
Füge zuerst die Moduskonfiguration auf den Props hinzu, denn wenn der Modus Params ist, muss der Sprung wissen, auf welcher Route er sich befindet, also:



  • mode: {



  •     Typ: String,



  •     Standard: 'Ereignis' // 'Ereignis' | 'Anfrage' | 'params'



  • },



  • routeName: {



  •     Typ: String



  • }


Dann nehmen Sie einige Änderungen an der eigentlichen Sprunglogik-Methode vor:



  • go (Seite) {



  •     if(Seite < 1) {



  •         Seite = 1



  •     }



  •     if(Seite > this.totalPage) {



  •         Seite = this.totalPage



  •     }



  •     if(page === this.currentPage) {



  •         Rückgabe



  •     }



  •     this.currentPage = parseInt(page,10)



  •     if(this.mode == 'query') {



  •         let query = this.$route.query



  •         query.page = this.currentPage



  •         this.$router.go({query: query})



  •     } sonst wenn(this.mode == 'params') {



  •         let params = this.$route.params



  •         params.page = this.currentPage



  •         this.$router.go({name: this.routeName,params: params})



  •     } sonst {



  •         this.$emit('go-page',{



  •             Seite: das.heutePage



  •         })



  •     }



  • }


Dies vervollständigt im Grunde eine einfache und universelle Page-Turning-Komponente, die nicht an das Repository gesendet werden kann, damit alle sie nutzen können.
Die in diesem Artikel endgültig implementierte Page-Turning-Komponente wurde veröffentlicht, und man sieht eine Welle von Quellcode:
vue-simple-pager







Vorhergehend:Asp.net MVC-Aktionsmethode im Aufruf zur Aktionsmethode eines anderen Controllers
Nächster:Bücher über Computerarchitektur
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com