⊗jsvuPmCmRE 69 of 72 menu

Reaktywne edytowanie danych komponentu w Vue

Zaimplementujmy teraz edytowanie danych naszych komponentów potomnych. Na początek w komponencie nadrzędnym stworzymy metodę zmiany użytkownika według jego id:

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

Stwórzmy komponenty w pętli, przekazując im jako parametry imię, nazwisko, id oraz metodę do zmiany:

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

Zadeklarujmy zdarzenie emitowane w konfiguracji emits komponentu potomnego:

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

Teraz w komponencie potomnym zróbmy właściwość, która będzie ustawiać tryb komponentu, pokaz lub edycję:

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

Stwórzmy również właściwości do obsługi pól input do edycji:

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

Sprawmy, aby początkowe wartości tych właściwości były pobierane z propsów:

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

Stwórzmy metodę, która będzie włączać tryb edycji:

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

Stwórzmy metodę, która będzie zapisywać wyedytowane dane, jednocześnie wyłączając tryb edycji:

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

Stwórzmy widok komponentu potomnego:

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

Zaimplementuj edytowanie danych komponentu Employee.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć