Answer the question
In order to leave comments, you need to log in
How to correctly send and receive custom events in nested components?
I have 2 components: Comments.vue and Comment.vue. In Comments.vue I get all the comments via api and display them in a loop:
<div class="post__review" v-for="comment in comments" :key="comment.id">
<comment :comment="comment"></comment>
</div>
<template>
<div v-if="comment">
<div class="review" :id="`comment-${comment.id}`" :class="{review_hover : hover}">
<!-- Other Code -->
<!-- Comment Replies -->
<div class="review-replies" v-if="comment && comment.replies" v-show="expandReplies && comment.replies.length > 0">
<div class="review-replies__line" @click="expandReplies = !expandReplies"></div>
<div class="review-replies__item" v-for="reply in comment.replies" :key="reply.id">
<comment :comment="reply" :type="'reply'" :reply_to="comment.user.name"></comment>
</div>
</div>
<!-- /Comment Replies -->
</div>
</div>
</template>
mounted() {
if (this.isCommentUserRepresentative()) {
this.$emit('findRepresentativeAnswer',true);
}
},
<template>
<div v-if="comment">
<div class="review" :id="`comment-${comment.id}`" :class="{review_hover : hover}" @findRepresentativeAnswer="commentHaveRepresentativeAnswer">
<!-- Other Code -->
<!-- Comment Replies -->
<div class="review-replies" v-if="comment && comment.replies" v-show="expandReplies && comment.replies.length > 0">
<div class="review-replies__line" @click="expandReplies = !expandReplies"></div>
<div class="review-replies__item" v-for="reply in comment.replies" :key="reply.id">
<comment :comment="reply" :type="'reply'" :reply_to="comment.user.name"></comment>
</div>
</div>
<!-- /Comment Replies -->
</div>
</div>
</template>
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question