我不知道还能叫什么。我有一个文件,我们称它为parent.vue。它有以下特点
PARENT.vue
<template>
<input-box
:room="currentRoom"
v-on:messagesent="getMessages"
class="dark:bg-gray-800 px-6 pb-6 pt-4 dark:border-t-2 dark:border-gray-600 bottom-0 sticky" />
</template>
method:
getMessages() {
axios.get('/chat/room/' + this.currentRoom.id + '/messages')
.then(response => {
this.messages = response.data;
})
.catch(error => {
console.log(error);
})
},
然后我有一个孩子,只要有什么事情发生,它就会调用v-on。问题是,我需要从孩子内部的孩子调用它。我在一个方法中有一个子对象,里面有一个"aka the aka“。
this.$emit('messagesent');
我怎样才能在孙子孙女体内完成同样的事情。
发布于 2021-10-07 16:22:12
如果你想保持封装性,就不需要。祖父母不应该知道孙子的事。它知道父组件,但不知道有多少子组件。原则上,您可以将祖父母的一个实现替换为另一个没有多个层的实现。或者有更多的层可以到达孩子。您可以将子级放入顶级组件中。
您已经了解了全局事件总线的概念。但是,总线不一定是全局的。你可以把它传到道具链的下面。(你可以使用祖父母本身作为公交车,但这会让它暴露在孩子面前;为了制造真正的公交车,需要更好的卫生条件。)
这区分了顶层组件和子组件:子组件将接收总线属性,以执行它帮助实现的顶层组件的功能。顶层组件将发起总线。
有关更多详细信息,请查看以下链接
https://stackoverflow.com/questions/69484496
复制相似问题