emit an event

This commit is contained in:
Andreas Zweili 2021-01-27 12:47:15 +01:00
parent 708ab00477
commit 471ecb7e73
2 changed files with 25 additions and 3 deletions

View File

@ -5,9 +5,12 @@
<friend-contact <friend-contact
v-for="friend in friends" v-for="friend in friends"
:key="friend.id" :key="friend.id"
:id="friend.id"
:name="friend.name" :name="friend.name"
:email-address="friend.email" :email-address="friend.email"
:phone-number="friend.phone" :phone-number="friend.phone"
:is-favorite="friend.isFavorite"
@toggle-favorite="togggleFavoriteStatus"
></friend-contact> ></friend-contact>
</ul> </ul>
</div> </div>
@ -23,16 +26,26 @@ export default {
name: "Manuel Lorenz", name: "Manuel Lorenz",
phone: "0123 4567 890", phone: "0123 4567 890",
email: "manuel@localhost.com", email: "manuel@localhost.com",
isFavorite: true,
}, },
{ {
id: "julie", id: "julie",
name: "Julie Jones", name: "Julie Jones",
phone: "9876 5432 210", phone: "9876 5432 210",
email: "julie@localhost.com", email: "julie@localhost.com",
isFavorite: false,
}, },
], ],
}; };
}, },
methods: {
togggleFavoriteStatus(friendId) {
const identifiedFriend = this.friends.find(
(friend) => friend.id === friendId
);
identifiedFriend.isFavorite = !identifiedFriend.isFavorite;
},
},
}; };
</script> </script>

View File

@ -14,6 +14,10 @@
export default { export default {
//props: ["name", "emailAddress", "phoneNumber"], //props: ["name", "emailAddress", "phoneNumber"],
props: { props: {
id: {
type: String,
required: true,
},
name: { name: {
type: String, type: String,
required: true, required: true,
@ -35,7 +39,6 @@ export default {
data() { data() {
return { return {
detailsAreVisible: false, detailsAreVisible: false,
friendIsFavorite: this.isFavorite,
}; };
}, },
computed: { computed: {
@ -47,7 +50,13 @@ export default {
} }
}, },
isFavoriteText() { isFavoriteText() {
if (this.friendIsFavorite) { if (this.isFavo>{{ name }} {{ isFavoriteText }}</h2>
<button @click="toggleDetails()">{{ buttonDetailsText }}</button>
<button @click="toggleFavorite()">Mark as Favorite</button>
<ul v-if="detailsAreVisible">
<li><strong>Phone:</strong> {{ phoneNumber }}</li>
<li><strong>Email:</strong> {{ emailAddress }}</li>
</ul>rite) {
return "(Favorite)"; return "(Favorite)";
} else { } else {
return ""; return "";
@ -59,7 +68,7 @@ export default {
this.detailsAreVisible = !this.detailsAreVisible; this.detailsAreVisible = !this.detailsAreVisible;
}, },
toggleFavorite() { toggleFavorite() {
this.friendIsFavorite = !this.friendIsFavorite; this.$emit("toggle-favorite", this.id);
}, },
}, },
}; };