Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 9797|Απάντηση: 0

[Βουε] Τεχνικό αυτοκόλλητο VUE

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 25/7/2019 4:12:31 μ.μ. | | |

Πρώτα απ 'όλα, το τελευταίο κύμα αποδόσεων:

Βασικά στοιχεία

Πρώτα απ 'όλα, τα στοιχεία που ανήκουν συνήθως στο στοιχείο τηλεειδοποίησης (εφεξής «στοιχείο τηλεειδοποίησης») είναι:

  • Προηγούμενος

  • Σελίδα 1

  • Ο αριθμός σελίδας που εμφανίζεται στη μέση

  • Τελευταία σελίδα

  • Επόμενο


Οι διαμορφώσεις που απαιτούνται για την προετοιμασία είναι:

  • σύνολοΣελίδα

  • initPage

  • showPrev (αν θα εμφανίζεται η προηγούμενη σελίδα)

  • showNext (αν θα εμφανιστεί η επόμενη σελίδα)

  • showItems (μερικές σελίδες στη μέση)

  • showJump (αν θα εμφανίζεται η μεταπήδηση σε ποια σελίδα πηγαίνει)


Αυτά μπορούν να ληφθούν μέσω των σκηνικών του vue.

Επιπλέον, το ίδιο το στοιχείο τηλεειδοποίησης πρέπει να έχει μια τρέχουσα σελίδα που καταγράφει την τρέχουσα σελίδα, ο πίνακας σελίδων χρησιμοποιείται για να φιλοξενήσει τον αριθμό σελίδας που εμφανίζεται στη μέση και το jumpPage δεσμεύει την είσοδο αριθμού σελίδας μετάβασης.

Βασική υλοποίηση

Ο αντίστοιχος κωδικός είναι:



  • <template>



  •     <div class="περιτύλιγμα τηλεειδοποίησης" v-if="totalPage > 0">



  •         <div class="pager-pages">



  •             <a v-show="currentPage > 1 && showPrev" @click="go(currentPage - 1)" > την προηγούμενη σελίδα</a>



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



  •             <strong v-show="σελίδες[0] > 2">...</strong>



  •             <a v-for="σελίδα σε σελίδες" :class="{active: currentPage == σελίδα ? 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)" > επόμενη σελίδα</a>



  •         </div>



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



  •             <span>Σύνολο <em class="jump-total">{{totalPage}}</em> σελίδα, μετάβαση στο</span>



  •             <input type="αριθμός" min="1" :max="totalPage" v-model="jumpPage" class="jump-input">



  •             <span>σελίδα</span>



  •             <a @click="go(jumpPage)" > καθοριστεί</a>



  •         </div>



  •     </div>



  • </template>



  • <script>



  •   Εξαγωγή προεπιλογής {



  •         Στηρίγματα: {



  •             totalPage: { // Συνολικός αριθμός σελίδων



  •                 τύπος: Αριθμός,



  •                 προεπιλογή: 1,



  •                 Απαιτείται: True



  •             },



  •             showItems: { // Αριθμός σελίδων που εμφανίζονται, π.χ.: 1 ... 34[5]67 ... 10



  •                 τύπος: Αριθμός,



  •                 Προεπιλογή: 5



  •             },



  •             showPrev: { // αν θα εμφανίζεται το "Προηγούμενο"



  •                 τύπος: Boolean,



  •                 προεπιλογή: true



  •             },



  •             showNext: { // Αν θα εμφανίζεται το "Next"



  •                 τύπος: Boolean,



  •                 προεπιλογή: true



  •             },



  •             showJump: { // αν θα εμφανιστεί το "Jump"



  •                 τύπος: Boolean,



  •                 προεπιλογή: true



  •             },



  •             initPage: {



  •                 τύπος: Αριθμός,



  •                 Προεπιλογή: 1



  •             }



  •         },



  •         Δεδομένα () {



  •             επιστροφή {



  •                 currentΣελίδα: 0,



  •                 σελίδες: [],



  •                 jumpPage: 0,



  •             }



  •         },



  •         created() {// currentPage ανάθεση κατά την προετοιμασία



  •             this.currentPage = this.initPage



  •         }



  •         Μέθοδοι: {



  •             go (σελίδα) {



  •                 if(σελίδα < 1) {



  •                     σελίδα = 1



  •                 }



  •                 if(σελίδα > this.totalPage) {



  •                     σελίδα = this.totalPage



  •                 }



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



  •                     Επιστροφή



  •                 }



  •                 this.currentPage = parseInt(σελίδα,10)



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



  •                     σελίδα: this.currentPage



  •                 })



  •             }



  •         },



  •         Παρακολουθήστε: {



  •             currentPage (newVal) {



  •                 this.jumpPage = νέοVal



  •             },



  •             initPage (newVal) {



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



  •                     this.currentPage = newVal



  •                 }



  •             }



  •         }



  •     }



  • </script>


Το επόμενο βήμα είναι πώς να λάβετε την τιμή του πίνακα σελίδων. Δεδομένου ότι οι σελίδες σχετίζονται πάντα στενά με την τρέχουσα σελίδα και τα showItems που πρέπει να εμφανίζονται στη διαμόρφωση, είναι απολύτως δυνατή η αλλαγή σελίδων σε μια υπολογιζόμενη ιδιότητα:



  • computed: {



  •     σελίδες () {



  •         Ο πίνακας αριθμών σελίδας λαμβάνεται με βάση τους αριθμούς σελίδας έναρξης και λήξης



  •         έστω getPages = (έναρξη,τέλος) => {



  •             if(έναρξη <= 1 || έναρξη > τέλος || έναρξη >= this.totalPage) {



  •                 έναρξη = 2



  •             }



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



  •                 end = this.totalPage - 1



  •             }



  •             έστω arr = []



  •             for(έστω i = έναρξη; i <= τέλος· i++) {



  •                 arr.push(i)



  •             }



  •             επιστροφή arr



  •         }



  •         let counts = this.showItems



  •         if(this.totalPage < counts + 2) {



  •             επιστροφή getPages(2,this.totalPage)



  •         } αλλιώς {



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



  •                 return getPages(2,counts)



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



  •                 επιστροφή getPages(this.totalPage + 1 - counts,this.totalPage - 1)



  •             } αλλιώς {



  •                 έστω μισό = Math.ceil(counts/2) - 1



  •                 let end = this.currentPage + μισό



  •                 if(μετράει % 2 === 0) {



  •                     τέλος++



  •                 }



  •                 επιστροφή getPages(this.currentPage - μισό,τέλος)



  •             }



  •         }



  •     }



  • }


Λειτουργική επέκταση

Σε αυτό το σημείο, υλοποιείται βασικά ένα συνηθισμένο στοιχείο αλλαγής σελίδας (το στυλ μπορεί να προσαρμοστεί από μόνο του). Ωστόσο, πολλές φορές (ειδικά ορισμένα υπόβαθρα διαχείρισης), σε συνδυασμό με το vue-router για τη δημιουργία ενός SPA, υπάρχουν συνήθως τέτοιες απαιτήσεις:

Αφού μεταβείτε σε μια σελίδα σε μια συγκεκριμένη λίστα, κάντε κλικ σε ένα στοιχείο για να μεταβείτε στη σελίδα επεξεργασίας και μετά την επεξεργασία, θέλετε να μπορείτε να επιστρέψετε στη σελίδα πριν μεταβείτε.

Αυτή η απαίτηση δεν είναι πολύ βολικό να εφαρμοστεί εάν χρησιμοποιείτε μόνο το παραπάνω στοιχείο τηλεειδοποίησης. Μερικοί άνθρωποι μπορεί να πουν ότι είναι εντάξει να συνδυάσετε το vuex, αλλά σε αυτήν την περίπτωση είναι απαραίτητο να καταγράψετε τον αριθμό σελίδας πριν από το άλμα στην κατάσταση. Εάν υπάρχουν πολλές λίστες αναστροφής σελίδων, προφανώς δεν είναι κομψό να καταγράφετε πολλές σελίδες.

Ωστόσο, λόγω της κομψότητας της υλοποίησης του Vue-Router, είναι εύκολο να ικανοποιηθούν οι παραπάνω απαιτήσεις:
Αρχικά, προσθέστε τη διαμόρφωση λειτουργίας στα στηρίγματα, επειδή όταν η λειτουργία είναι παράμετροι, το άλμα πρέπει να γνωρίζει σε ποια διαδρομή βρίσκεται, οπότε:



  • mode: {



  •     τύπος: String,



  •     Προεπιλογή: 'Event' // 'Event' | «Ερώτημα» | «Παράμετροι»



  • },



  • routeName: {



  •     τύπος: String



  • }


Στη συνέχεια, κάντε μερικές αλλαγές στην πραγματική μέθοδο λογικής άλματος go(page):



  • go (σελίδα) {



  •     if(σελίδα < 1) {



  •         σελίδα = 1



  •     }



  •     if(σελίδα > this.totalPage) {



  •         σελίδα = this.totalPage



  •     }



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



  •         Επιστροφή



  •     }



  •     this.currentPage = parseInt(σελίδα,10)



  •     if(this.mode == 'ερώτημα') {



  •         let query = this.$route.query



  •         query.page = this.currentPage



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



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



  •         έστω params = this.$route.params



  •         params.page = this.currentPage



  •         this.$router.go({όνομα: this.routeName,params: params})



  •     } αλλιώς {



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



  •             σελίδα: this.currentPage



  •         })



  •     }



  • }


Αυτό ουσιαστικά ολοκληρώνει ένα απλό και καθολικό στοιχείο περιστροφής σελίδας, το οποίο δεν μπορεί να σταλεί στο αποθετήριο για χρήση από όλους.
Το στοιχείο αλλαγής σελίδας που εφαρμόστηκε τελικά σε αυτό το άρθρο κυκλοφόρησε και μπορείτε να δείτε ένα κύμα πηγαίου κώδικα:
vue-simple-pager







Προηγούμενος:Asp.net μέθοδος ενέργειας MVC στη μέθοδο ενέργειας κλήσης σε άλλο ελεγκτή
Επόμενος:Βιβλία Αρχιτεκτονικής Υπολογιστών
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com