IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VueJS Discussion :

[V-For] Seléction d'un élément de boucle


Sujet :

VueJS

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [V-For] Seléction d'un élément de boucle
    Bonjour,

    Je suis débutant en développement, depuis quelque mois je réalise un projet de création de site E-commerce.
    J'ai un problème qui a mon avis est simple mais je ne comprend pas la logique a mettre en place...

    J'ai une liste de produit afficher avec un v-for sur ma page, je souhaiterai pouvoir faire référence au produit en particulier lorsque je clic sur le bouton associé :
    Nom : Capture d’écran du 2023-02-24 08-09-03.png
Affichages : 102
Taille : 39,9 Ko

    (Ne faite pas attention aux "dénomination" ni au design)

    J'ai utiliser la fonction v-if pour afficher un formulaire lorsque je clic sur le bouton mais le problème c'est qu'au lieu d'afficher un seul formulaire pour le seul élément cliqué, j'ai un formulaire pour tout les élément de la bouche.
    (j'espère que je me fait comprendre mdr)

    Nom : 2.png
Affichages : 94
Taille : 29,1 Ko

    Je voudrais qu'en cliquant sur le bouton modifier, un seul formulaire s'affiche et fasse bien référence a l'item cliqué pour que je puisse bien modifié ce produit
    Voici mon code :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    <template lang="">
        <div class="items-list mb-2" v-for="(item, _id) in items" :key="_id">
        {{ item.nom }}
            <div class="button">
                <button @click="showModifyForm(item)" class="btn btn-success">Modifier</button>
                <button @click="afficher()" class=" ms-2 btn btn-danger">Supprimer</button>
            </div>
            <form v-if="modifyForm" action="">
                <div class="name-item mb-3">
                    <label for="name-label">Nom</label>
                    <input v-model="nameItem" class="form-control" type="text" id="name">
                </div>
                <div class="description-item mb-3">
                    <label for="description-label">Description</label>
                    <textarea v-model="descriptionItem" class="form-control" name="" id="" cols="30" rows="5"></textarea>
                </div>
                <div class="image-item mb-3">
                    <label for="image-labal">URL image</label>
                    <input v-model="imageItem" class="form-control" type="url" name="" id="">
                </div>
                <div class="category-item mb-3">
                    <label for="category-label">Catégorie</label>
                    <select v-model="categoryItem" class="form-control" name="category" id="">
                        <option value="none">Catégorie...</option>
                        <option value="baume">Baume</option>
                        <option value="huile">Huile</option>
                        <option value="accessoire">Accessoire</option>
                    </select>
                </div>
                <div class="price-item mb-3">
                    <label for="price-label">Prix</label>
                    <input v-model="priceItem" class="form-control" type="number" name="price" id="">
                </div>
                <div class="en-stock-item mb-3">
                    <label for="en-stock-label">En stock</label>
                    <select v-model="enStockItem" class="form-control" name="en-stock" id="">
                        <option value="true">Oui</option>
                        <option value="false">Non</option>
                    </select>
                </div>
                <div class="submit-item text-center">
                    <button @click="validateItem()" class="btn btn-primary" type="submit">Creer item</button>
                </div>
            </form>
        </div>
     
    </template>
     
     
    <script>
     
    import axios from 'axios';
     
    export default {
     
        data() {
            return {
                items: null,
                modifyForm: false
            }
        },
        methods: {
            showModifyForm(item) {
                if(this.modifyForm === false) {
                    this.modifyForm = true;
                } else {
                    this.modifyForm = false;
                }
                console.log(item)
            }
        },
         async created() {
            axios.get("http://localhost:3000/api/items").then((res) => {this.items = res.data})
        },
     
        
    }
     
     
    </script>
     
     
     
    <style>
        .items-list {
            display: flex;
            justify-content: space-between;
        }
    </style>

  2. #2
    Membre expérimenté
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Points : 1 333
    Points
    1 333
    Par défaut
    hello, ton souci, c'est que ton formulaire est dans ta boucle.
    quand tu passes le booléen à true, il s'affiche pour chaque itération de ta boucle.
    tu peux corriger facilement en conservant dans data l'index de l'élément cliqué et en testant si l'index courant est celui du produit édité pour afficher le formulaire
    on ne dit pas "ça ne marche pas" on dit "je suis incapable de faire fonctionner correctement les outils mis à ma disposition"
    Pas de question technique par MP

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour ta réponse tout d'abord !

    Je savais cela, mais je voulais que le formulaire s'affiche sur l'élément cliqué, c'est pour ça que je l'ai mis dans la boucle mais en effet logique qu'il s'affiche en dessous de tout les élements puisque comme tu l'a dit, le booléen passe a true pour chaque élément...

    En revanche pour afficher le form directement sous l'élément, une idée ?

    Merci !

Discussions similaires

  1. Aide sur Select
    Par no_me_entero dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/04/2011, 10h21
  2. [Struts-Layout] aide sur select
    Par osman.amine dans le forum Struts 1
    Réponses: 10
    Dernier message: 02/05/2007, 22h19
  3. Aide sur une selection de chaine de char avec une souris
    Par Baharroth dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 15/11/2006, 21h17
  4. [MySQL] aide sur un select
    Par nebil dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 26/06/2006, 12h54
  5. [BATCH] Aide sur boucle for et test
    Par t_om84 dans le forum Windows
    Réponses: 3
    Dernier message: 07/06/2006, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo