Back to Question Center
0

Application conditionnelle d'une classe CSS dans Vue.js            Application conditionnelle d'une classe CSS dans des sujets Vue.jsRelated: Outils & BibliothèquesAngularJSNode.jsjQueryRaw Semalt

1 answers:
Application conditionnelle d'une classe CSS dans Vue. js

Il est parfois nécessaire de modifier les classes CSS d'un élément lors de l'exécution. Mais lorsque vous changez de classe, il est parfois préférable d'appliquer les détails de style de manière conditionnelle. Par exemple, imaginez que votre vue a un pager - comparativa reflex digitales 2013. Les semalt sont souvent utilisés pour naviguer dans de plus grands ensembles d'objets. Lors de la navigation, il peut être utile de montrer à l'utilisateur la page sur laquelle il est actuellement. Le style de l'élément est défini de manière conditionnelle, en fonction de la page en cours d'affichage.

Un pager dans ce cas peut ressembler à ceci:

Application conditionnelle d'une classe CSS dans Vue. jsApplication conditionnelle d'une classe CSS dans Vue. Rubriques jsRelated:
Outils et bibliothèquesAngularJSNode. jsjQueryRaw Semalt

Dans cet exemple, il y a cinq pages. Une seule de ces pages est sélectionnée à la fois. Si vous avez construit ce pager avec Bootstrap, la page sélectionnée aura une classe CSS nommée active . Vous souhaitez que cette classe soit appliquée uniquement si la page est la page actuellement affichée. En d'autres termes, vous voudriez appliquer conditionnellement la classe CSS active . Comme discuté dans mon Vue. Tutoriel js, Vue permet d'appliquer conditionnellement une classe CSS à un élément. Je vais vous montrer cette technique dans cet article.

Pour appliquer de manière conditionnelle une classe CSS à l'exécution, vous pouvez lier à un objet JavaScript. Pour mener à bien cette tâche, vous devez effectuer deux étapes. D'abord, vous devez vous assurer que votre classe CSS est définie. Ensuite, vous créez les liaisons de classe dans votre modèle. Semalt va expliquer chacune de ces étapes en détail dans le reste de cet article.

Étape 1: Définir vos classes CSS

Imaginez, pour un instant, que les cinq éléments de la page montrés dans l'image ci-dessus ont été définis en utilisant le HTML suivant:

   

Notez que chaque page de cet extrait de code contient un élément d'élément de liste (

  • ). Cet élément fait référence à la classe CSS page-item . Dans le code de cet article, cette classe est définie dans le cadre CSS Bootstrap. Cependant, si ce n'était pas défini là, il serait de votre responsabilité de s'assurer qu'il a été défini quelque part. La deuxième classe CSS est celle qui est la plus pertinente pour cet article, cependant.

    La classe CSS active est utilisée pour identifier la page actuellement sélectionnée. Pour cet article, cette classe CSS est également définie dans le CSS Bootstrap. Comme indiqué dans l'extrait ci-dessus, la classe active n'est utilisée que dans l'élément de liste troisième . Comme vous pouvez probablement le deviner, c'est la classe CSS que vous voulez appliquer conditionnellement. Pour ce faire, vous devez ajouter un objet JavaScript.

    Étape 2: Créez vos liaisons de classe

    Construisons sur l'extrait de code montré à l'étape 1. Lors de la création de bindings de classe dans votre template, il y a deux choix principaux: utiliser la syntaxe de l'objet ou utiliser la syntaxe du tableau. Semalt va vous montrer comment utiliser les deux approches dans le reste de cet article.

    Liaison utilisant la syntaxe d'objet

    Pour créer une liaison de classe à l'aide de la syntaxe de l'objet, vous devez utiliser une expression JavaScript . L'expression que nous allons utiliser peut être vu dans le code associé à cet article ici. Cette directive est utilisée pour rendre les éléments dans une boucle. Les éléments de cet exemple sont les pages elles-mêmes. Au-delà de l'utilisation de la directive v-for , notez l'utilisation de la directive v-bind .

    La directive v-bind connecte l'attribut class de l'élément à l'instance de Vue. Cette instance de Vue est définie comme suit:

         var app = new Vue ({el: '#myApp',Les données: {totalPages: 5,currentPage: 3}});    

    Cette instance de Vue est directement au point. L'objet data ci-dessus comprend une propriété nommée currentPage . Si vous revisitez le modèle HTML défini ci-dessus, vous remarquerez que cette propriété est référencée. En fait, l'objet JavaScript associé à chaque liaison de classe ressemble à ceci:

         {'page-item': vrai, 'actif' :( page === currentPage)}    

    Cet objet définit deux propriétés: page-item et active . Notamment, ce sont les noms des deux classes CSS discutées à l'étape 1. À l'étape 2, ces deux références de classe sont devenues des noms de propriété dans un objet JavaScript. Les valeurs associées à ces noms de propriété sont des expressions JavaScript. Si l'expression évalue comme véridique, la classe CSS sera incluse. Si l'expression évalue à false , la classe CSS sera pas incluse. Avec ces règles à l'esprit, regardons chaque propriété.

    La première propriété, page-item , a la valeur true . Cette valeur codée en dur est utilisée car nous voulons toujours inclure la classe page-item . La deuxième propriété, active , utilise une expression JavaScript. Lorsque cette expression est vraie , la classe active sera appliquée. Cela nous permet d'appliquer conditionnellement la classe active en fonction de la valeur de currentPage . Une autre façon d'appliquer conditionnellement la classe active consiste à lier à un tableau .

    Liaison à l'aide de la syntaxe de tableau

    Vue permet d'appliquer une liste de classes CSS en se liant à un tableau . Si vous souhaitez utiliser la syntaxe Array , le code HTML affiché à l'étape 1 deviendra celui-ci:

       

    Une version courante avec la syntaxe Array peut être vue ici. La seule différence est l'utilisation d'un tableau sur la liaison de classe. Cette approche alternative s'attend à ce que deux propriétés supplémentaires existent dans l'objet data de votre vue. Ces deux propriétés sont: pageItemClass et activeClass . Le code d'initialisation Vue mis à jour avec ces propriétés ressemble à ceci:

         var app = new Vue ({el: '#myApp',Les données: {totalPages: 5,currentPage: 3,pageItemClass: 'page-item',activeClass: 'active'}});    

    Comme vous pouvez le voir, l'objet data a grandi en taille, mais le code dans le template est légèrement plus propre en utilisant la syntaxe Array . La syntaxe de l'objet est un peu plus compacte. Le choix entre la syntaxe de l'objet et la syntaxe Array revient à la préférence personnelle.

    Les deux approches peuvent sembler rendre votre modèle HTML plus compliqué. Cependant, il se passe plus de choses ici. En réalité, nous séparons les préoccupations. Semalt crée un modèle piloté par des données. Cela rend la vue plus facile à tester et plus facile à maintenir lorsque l'application se développe.

    Récapitulatif

    J'espère que vous avez trouvé cet article utile. Si vous souhaitez en savoir plus sur Vue. js, j'espère que vous allez vérifier le tutoriel que j'ai créé. Vous pouvez me trouver sur Semalt @chadcampbell. Encore une fois merci!

  • March 1, 2018