


Pratique des composants Vue : développement de composants de pagination
Pratique des composants Vue : développement de composants de pagination
Introduction
Dans les applications Web, la fonction de pagination est un composant essentiel. Un bon composant de pagination doit être simple et clair dans sa présentation, riche en fonctions et facile à intégrer et à utiliser.
Dans cet article, nous présenterons comment utiliser le framework Vue.js pour développer un composant de pagination hautement personnalisable. Nous expliquerons en détail comment développer à l'aide des composants Vue à travers des exemples de code.
Pile technologique
- Vue.js 2.x
- JavaScript (ES6)
- HTML5 et CSS3
Environnement de développement
- Node.js v8.9.3
- npm v5.5.1
- V ue.js v2 .5.2
Exigences du composant de pagination
- Recevoir le nombre total de pages (total) et le nombre actuel de pages (actuel) via les accessoires
- Vous pouvez configurer le nombre maximum de pages affichées (maxShown)
- Vous pouvez configurez le texte affiché par le bouton (prevText et nextText) et le style du bouton
- Cliquez sur le numéro de page pour passer à la page correspondante
- Le numéro de la page actuelle est mis en surbrillance
- Lorsque la page actuelle n'a pas de page précédente, le clic l'événement du bouton de la page précédente est ignoré
- Lorsque la page actuelle n'a pas de page suivante, ignorez l'événement de clic du bouton de la page suivante
Idées de conception et implémentation du code
Selon les besoins, nous divisons le composant de pagination en plusieurs petits composants pour la mise en œuvre. Nous devons créer les 3 petits composants suivants :
- Pagination.vue
composant de pagination principal, qui est responsable du traitement des données et de la logique de pagination. Transmettez les informations de pagination aux composants enfants et répondez aux événements des composants enfants.
- Button.vue
Ce composant est un composant bouton, utilisé pour créer des boutons de pagination.
- Page.vue
Ce composant est utilisé pour créer un bloc de page unique, comprenant l'étiquette et le statut de la page. Un bloc de page peut être la page actuelle ou une page non actuelle.
Ensuite, utilisons du code pour implémenter les 3 composants ci-dessus.
- Pagination.vue
<template> <div class="pagination-container"> <button-prev :current="current" @onPrev="prev"></button-prev> <page v-for="page in pages" :key="page" :page="page" :is-selected="page === current" @on-page-selected="selectPage"></page> <button-next :current="current" :total="total" @onNext="next"></button-next> </div> </template> <script> import ButtonPrev from './ButtonPrev.vue'; import ButtonNext from './ButtonNext.vue'; import Page from './Page.vue'; export default { components: { ButtonPrev, ButtonNext, Page }, props: { total: { type: Number, default: 10 }, current: { type: Number, default: 1 }, maxShown: { type: Number, default: 5 }, prevText: { type: String, default: '上一页' }, nextText: { type: String, default: '下一页' } }, computed: { pages () { const start = Math.max(1, this.current - Math.floor(this.maxShown / 2)); const end = Math.min(this.total, start + this.maxShown - 1); return Array.from({ length: end - start + 1 }, (v, k) => start + k); } }, methods: { selectPage (page) { if (this.current === page) return; this.current = page; this.$emit('onPageChanged', page); }, prev () { if (this.current > 1) { this.selectPage(this.current - 1); } }, next () { if (this.current < this.total) { this.selectPage(this.current + 1); } } } } </script>
Dans le code ci-dessus, nous importons d'abord les composants ButtonPrev, ButtonNext et Page. Ensuite, les attributs total, current, maxShown, prevText et nextText sont obtenus à l'aide d'accessoires, et les pages d'attributs calculées sont définies en fonction du numéro de page actuel (current) et du numéro de page maximum (maxShown), un tableau contenant le numéro de page. est obtenu à utiliser dans le composant Present.
Nous définissons également la méthode selectPage, dans laquelle si le numéro de page (page) est le même que le numéro de page actuel (current), renvoie ou ne fait rien. Sinon, le nouveau numéro de page est émis vers le composant parent.
Les méthodes prev() et next() sont utilisées pour gérer les événements de la page précédente et de la page suivante et empêcher la réponse aux événements.
- ButtonPrev.vue
<template> <button class="btn-previous" :disabled="current === 1" @click="onPrev()"> {{ prevText }} </button> </template> <script> export default { props: { prevText: { type: String, default: '上一页' }, current: { type: Number, default: 1 } }, methods: { onPrev () { this.$emit('onPrev'); } } } </script> <style scoped> .btn-previous { border: none; color: #333; display: inline-block; font-size: 16px; padding: 6px 12px; margin-right: 5px; background-color:#fff; cursor: pointer; border-radius: 2px; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); } .btn-previous:disabled { color: #ccc; cursor: default; } </style>
Dans le code ci-dessus, nous obtenons d'abord le numéro de page actuel (current) et les attributs de texte (prevText) du bouton de la page précédente via des accessoires. Dans le modèle, utilisez la liaison de classe (désactivée) pour contrôler l'état d'utilisation du bouton. Une méthode onPrev est définie, qui déclenche l'événement onPrev du composant parent.
- ButtonNext.vue
<template> <button class="btn-next" :disabled="current === total" @click="onNext()"> {{ nextText }} </button> </template> <script> export default { props: { total: { type: Number, default: 10 }, nextText: { type: String, default: '下一页' }, current: { type: Number, default: 1 } }, methods: { onNext () { this.$emit('onNext'); } } } </script> <style scoped> .btn-next { border: none; color: #333; display: inline-block; font-size: 16px; padding: 6px 12px; margin-left: 5px; background-color: #fff; cursor: pointer; border-radius: 2px; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); } .btn-next:disabled { color: #ccc; cursor: default; } </style>
Dans le code ci-dessus, nous avons copié le code de ButtonPrev.vue et légèrement modifié le texte et les conditions de jugement.
- Page.vue
<template> <button :class="{ current: isSelected }" class="btn-page" @click="onPageSelected(page)"> {{ page }} </button> </template> <script> export default { props: { page: { type: Number, required: true }, isSelected: { type: Boolean, default: false } }, methods: { onPageSelected () { this.$emit('onPageSelected', this.page); } } } </script> <style scoped> .btn-page { border: none; color: #333; display: inline-block; font-size: 16px; padding: 6px 12px; margin-left: 5px; background-color: #fff; cursor: pointer; border-radius: 2px; box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1); } .btn-page.current { background-color: #0078d7; color: #fff; } </style>
Dans le code ci-dessus, nous avons obtenu la valeur du numéro de page (page) et l'attribut isSelected du bouton via les accessoires. Dans le modèle, utilisez la liaison de classe (« actuelle ») pour mettre en surbrillance la page sélectionnée.
Nous définissons également une méthode onPageSelected, qui déclenche l'événement onPageSelected du composant parent.
Enfin, ces composants peuvent être utilisés dans un modèle dans n'importe quelle application Vue.js, comme indiqué ci-dessous :
<template> <div> <pagination :total="total" :current="current" :maxShown="maxShown" :prevText="prevText" :nextText="nextText" @onPageChanged="onPageChanged"></pagination> <ul> <li v-for="(item, index) in items" :key="index">{{ item.name }}</li> </ul> </div> </template> <script> import Pagination from './Pagination.vue'; export default { components: { Pagination }, data () { return { current: 1, maxShown: 10, prevText: '上一页', nextText: '下一页', total: 10, pageSize: 10, items: [{ name: 'Item 1' }, { name: 'Item 2' }, { name: 'Item 3' }] } }, methods: { onPageChanged (page) { console.log('Page changed to: ', page); // 当前页面数据请求 } } } </script>
Dans le code ci-dessus, nous avons introduit le composant Pagination et en avons fait un composant parent dans le modèle. Nous lions également total, current et maxShown au composant pour obtenir leurs valeurs. Dans la méthode onPageChanged, nous pouvons gérer l'événement de changement de page et demander les données correspondantes en fonction du numéro de page actuel.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Il existe trois façons de se référer aux fichiers JS dans Vue.js: spécifiez directement le chemin à l'aide du & lt; script & gt; étiqueter;; importation dynamique à l'aide du crochet de cycle de vie monté (); et l'importation via la bibliothèque de gestion de l'État Vuex.

Vous pouvez ajouter une fonction au bouton VUE en liant le bouton dans le modèle HTML à une méthode. Définissez la logique de la fonction de méthode et d'écriture dans l'instance Vue.

L'option Watch dans Vue.js permet aux développeurs d'écouter des modifications de données spécifiques. Lorsque les données changent, regardez déclenche une fonction de rappel pour effectuer des vues de mise à jour ou d'autres tâches. Ses options de configuration incluent immédiatement, qui spécifie s'il faut exécuter un rappel immédiatement, et profond, ce qui spécifie s'il faut écouter récursivement les modifications des objets ou des tableaux.

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Vue.js dispose de quatre méthodes pour revenir à la page précédente: $ router.go (-1) $ router.back () utilise & lt; router-link to = & quot; / & quot; Composant Window.History.back (), et la sélection de la méthode dépend de la scène.

Implémentez les effets de défilement marquee / texte dans VUE, en utilisant des animations CSS ou des bibliothèques tierces. Cet article présente comment utiliser l'animation CSS: créer du texte de défilement et envelopper du texte avec & lt; div & gt;. Définissez les animations CSS et défini: caché, largeur et animation. Définissez les images clés, Set Transforment: Translatex () au début et à la fin de l'animation. Ajustez les propriétés d'animation telles que la durée, la vitesse de défilement et la direction.

Vous pouvez interroger la version Vue en utilisant Vue Devtools pour afficher l'onglet Vue dans la console du navigateur. Utilisez NPM pour exécuter la commande "NPM List -g Vue". Recherchez l'élément VUE dans l'objet "dépendances" du fichier package.json. Pour les projets Vue CLI, exécutez la commande "Vue --version". Vérifiez les informations de la version dans le & lt; script & gt; Tag dans le fichier html qui fait référence au fichier VUE.

Il existe trois méthodes courantes pour que Vue.js traverse les tableaux et les objets: la directive V-FOR est utilisée pour traverser chaque élément et les modèles de rendu; La directive V-Bind peut être utilisée avec V-FOR pour définir dynamiquement les valeurs d'attribut pour chaque élément; et la méthode .map peut convertir les éléments du tableau en nouveaux tableaux.
