emit an event
This commit is contained in:
parent
708ab00477
commit
471ecb7e73
|
@ -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>
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Reference in New Issue