⊗jsvuPmCmRE 69 of 72 menu

Édition réactive des données du composant dans Vue

Implémentons maintenant l'édition des données de nos composants enfants. Pour commencer, dans le composant parent, créons une méthode pour modifier l'utilisateur par son id :

methods: { change(id, name, surn) { this.users = this.users.map((user) => { if (user.id === id) { user.name = name; user.surn = surn; } return user; }); } }

Créons les composants dans une boucle, en leur passant en paramètre le prénom, le nom, le id et la méthode de modification :

<template> <User v-for ="user in users" :id ="user.id" :name ="user.name" :surn ="user.surn" :key ="user.id" @change="change" /> </template>

Déclarons l'événement émis dans la configuration emits du composant enfant :

props: { id: Number, name: String, surn: String, }, emits: ['change'],

Maintenant, dans le composant enfant, créons une propriété qui définira le mode du composant, affichage ou édition :

data() { return { isEdit: false, } }

Créons également des propriétés pour prendre en charge le fonctionnement des champs de saisie pour l'édition :

data() { return { isEdit: false, newName: '', newSurn: '', } }

Faisons en sorte que les valeurs initiales de ces propriétés proviennent des props :

data() { return { isEdit: false, newName: this.name, newSurn: this.surn, } }

Créons une méthode qui activera le mode édition :

methods: { edit() { this.isEdit = true; } }

Créons une méthode qui sauvegardera les données modifiées en désactivant le mode édition :

methods: { save() { this.isEdit = false; this.$emit('change', this.id, this.newName, this.newSurn); } }

Créons le template du composant enfant :

<template> <template v-if="!isEdit"> {{ name }} {{ surn }} <button @click="edit"> edit </button> </template> <template v-else> <input v-model="newName"> <input v-model="newSurn"> <button @click="save"> save </button> </template> </template>

Implémentez l'édition des données du composant Employee.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser