Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 9797|Odpoveď: 0

[Vue] Technická nálepka Vue

[Kopírovať odkaz]
Zverejnené 25. 7. 2019 16:12:31 | | |

Najprv posledná vlna renderovaní:

Základné prvky

V prvom rade, prvky, ktoré bežne vlastní komponent pagera (ďalej len "komponent pagera"), sú:

  • Predchádzajúce

  • Strana 1

  • Číslo strany uvedené v strede

  • Posledná strana

  • Ďalej


Konfigurácie potrebné na inicializáciu sú:

  • totalPage

  • initPage

  • showPrev (či zobraziť predchádzajúcu stránku)

  • zobraziť ďalšie (či zobraziť nasledujúcu stránku)

  • showItems (niekoľko strán uprostred)

  • showJump (či zobraziť skok na stránku, na ktorú smeruje)


Tieto je možné prijímať cez rekvizity Vue.

Okrem toho samotná komponenta pageru musí mať currentPage, ktorá zaznamenáva aktuálnu stránku, pole stránok sa používa na prispôsobenie číslu stránky zobrazenému v strede a jumpPage priradí vstup čísla stránky skoku.

Základná realizácia

Príslušný kód je:



  • <template>



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



  •         <div class="pager-pages">



  •             <a v-show="currentPage > 1 & showPrev" @click="go(currentPage - 1)" > predchádzajúcej stránke</a>



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



  •             <strong v-show="pages[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)" > ďalšia stránka</a>



  •         </div>



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



  •             <span>Total <em class="jump-total">{{totalPage}}</em> stránka, preskočiť na</span>



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



  •             <span>Stránka</span>



  •             <a @click="go(jumpPage)" > určený</a>



  •         </div>



  •     </div>



  • </template>



  • <script>



  •   export default {



  •         Rekvizity: {



  •             totalPage: { // Celkový počet strán



  •                 typ: Číslo,



  •                 predvolené: 1,



  •                 požadované: pravda



  •             },



  •             showItems: { // Počet zobrazených strán, napr.: 1 ... 34[5]67 ... 10



  •                 typ: Číslo,



  •                 Predvolené: 5



  •             },



  •             showPrev: { // či zobraziť "Predchádzajúce"



  •                 typ: Boolean,



  •                 predvolené: pravda



  •             },



  •             showNext: { // Či zobraziť "Next"



  •                 typ: Boolean,



  •                 predvolené: pravda



  •             },



  •             showJump: { // či zobraziť "Jump"



  •                 typ: Boolean,



  •                 predvolené: pravda



  •             },



  •             initPage: {



  •                 typ: Číslo,



  •                 Predvolené: 1



  •             }



  •         },



  •         dáta () {



  •             return {



  •                 aktuálnaStrana: 0,



  •                 stránky: [],



  •                 jumpPage: 0,



  •             }



  •         },



  •         created() {// priradenie currentPage pri inicializácii



  •             this.currentPage = this.initPage



  •         }



  •         Metódy: {



  •             choď (stránka) {



  •                 if(page < 1) {



  •                     strana = 1



  •                 }



  •                 if(page > this.totalPage) {



  •                     stránka = this.totalPage



  •                 }



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



  •                     návrat



  •                 }



  •                 this.currentPage = parseInt(page,10)



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



  •                     stránka: this.currentPage



  •                 })



  •             }



  •         },



  •         Sledujte: {



  •             currentPage (newVal) {



  •                 this.jumpPage = newVal



  •             },



  •             initPage (newVal) {



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



  •                     this.currentPage = newVal



  •                 }



  •             }



  •         }



  •     }



  • </script>


Ďalším krokom je, ako získať hodnotu poľa stránok. Keďže stránky sú vždy úzko prepojené s aktuálnou stránkou a showItems, ktoré je potrebné zobraziť v konfigurácii, je úplne možné zmeniť stránky na vypočítanú vlastnosť:



  • computed: {



  •     stránky () {



  •         Pole čísel strán sa získava na základe počiatočných a koncových čísel strán



  •         nech getPages = (začiatok,koniec) => {



  •             if(začať <= 1 || začať > koniec || začať >= this.totalPage) {



  •                 začiatok = 2



  •             }



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



  •                 koniec = this.totalPage - 1



  •             }



  •             nech arr = []



  •             pre(nech i = začiatok; i <= koniec; i++) {



  •                 arr.push(i)



  •             }



  •             return arr



  •         }



  •         nech counts = this.showItems



  •         if(this.totalPage < počíta + 2) {



  •             return getPages(2,this.totalPage)



  •         } inak {



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



  •                 return getPages(2,counts)



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



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



  •             } inak {



  •                 nech polovica = Math.ceil(counts/2) - 1



  •                 nech koniec = this.currentPage + half



  •                 if(počíta % 2 === 0) {



  •                     end++



  •                 }



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



  •             }



  •         }



  •     }



  • }


Funkčná expanzia

V tomto bode je v podstate implementovaný bežný komponent na listovanie stránok (štýl je možné prispôsobiť sám). Avšak často (najmä s manažérskymi skúsenosťami), v kombinácii s vue-routerom na vytvorenie SPA, sú zvyčajne takéto požiadavky:

Po prelistovaní na stránku v určitom zozname kliknite na položku, aby ste prešli na stránku s úpravami, a po úprave by ste sa mali vedieť vrátiť na stránku pred skokom.

Táto požiadavka nie je veľmi pohodlná na implementáciu, ak používate len vyššie uvedený komponent pagera. Niektorí ľudia môžu povedať, že je v poriadku kombinovať Vuex, ale v tomto prípade je potrebné zaznamenať číslo stránky pred skokom v stave. Ak je zoznamov na prelistovanie veľa stránok, samozrejme nie je elegantné zaznamenávať viacero strán.

Vďaka elegancii implementácie Vue-Router je však jednoduché splniť vyššie uvedené požiadavky:
Najprv pridajte konfiguráciu módu na rekvizity, pretože keď je režim parametre, skok musí vedieť, na ktorej trase je, takže:



  • mode: {



  •     typ: Struna,



  •     predvolené: 'event' // 'event' | 'query' | 'params'



  • },



  • routeName: {



  •     typ: Struna



  • }


Potom urobte niekoľko zmien v skutočnej metóde skokovej logiky go(page):



  • choď (stránka) {



  •     if(page < 1) {



  •         strana = 1



  •     }



  •     if(page > this.totalPage) {



  •         stránka = this.totalPage



  •     }



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



  •         návrat



  •     }



  •     this.currentPage = parseInt(page,10)



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



  •         nech query = this.$route.query



  •         query.page = this.currentPage



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



  •     } inak if(this.mode == 'params') {



  •         nech params = this.$route.params



  •         params.page = this.currentPage



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



  •     } inak {



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



  •             stránka: this.currentPage



  •         })



  •     }



  • }


Týmto sa v podstate uzatvára jednoduchá a univerzálna stránka na listovanie, ktorú nie je možné posielať do repozitára na použitie každému.
Komponent na otáčanie stránok, ktorý je konečne implementovaný v tomto článku, bol zverejnený a môžete vidieť vlnu zdrojového kódu:
vue-simple-pager







Predchádzajúci:Asp.net metóda akcie MVC v metóde akcie volania iného riadiaceho
Budúci:Knihy o počítačovej architektúre
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com