⊗jsvuPmCmRE 69 of 72 menu

Modifica Reattiva dei Dati del Componente in Vue

Ora implementiamo la modifica dei dati dei nostri componenti figli. Per iniziare, nel componente genitore creiamo un metodo per modificare l'utente in base al suo id:

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

Creiamo i componenti in un ciclo, passando loro come parametri nome, cognome, id e il metodo per la modifica:

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

Registriamo l'evento emesso nella configurazione emits del componente figlio:

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

Ora nel componente figlio creiamo una proprietà che imposterà la modalità del componente, visualizzazione o modifica:

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

Creiamo anche delle proprietà per supportare il funzionamento degli input per la modifica:

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

Facciamo in modo che i valori iniziali di queste proprietà vengano presi dalle props:

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

Creiamo un metodo che attiverà la modalità di modifica:

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

Creiamo un metodo che salverà i dati modificati, disattivando contemporaneamente la modalità di modifica:

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

Creiamo il template del componente figlio:

<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>

Implementate la modifica dei dati del componente Employee.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta