gpt4 book ai didi

javascript - Vue $on 事件不会在第一次使用事件总线时触发

转载 作者:行者123 更新时间:2023-11-30 13:56:20 25 4
gpt4 key购买 nike

我想知道组件何时以及为什么无法处理正在监听的第一个 $on 事件。我有这个函数,调用时会触发 2 个事件:

 initModalTimer: function () {
serverBus.$emit('initSettingsModal', {
'name': 'Timer',

});

serverBus.$emit('initTimer', {
'timer_type': this.timer_type,
});
}

InitSettingsModal 为模式传递信息:

//Modal Component

<template>
<div v-else-if="elementName === 'Timer'">
<timer></timer>
</div>
<div v-else-if="elementName === 'Socials'">
<socials></socials>
</div>
</template>

<script>
//Other Vue stuff
created() {
serverBus.$on('initSettingsModal', (elem_identifier) => {
this.elementName = elem_identifier["name"];
});
}
</script>

第二个事件在基于模态组件中的 v-if 加载的组件中处理(在本例中是 te 组件计时器):

//Timer Component

created() {
serverBus.$on('initTimer', (response) => {
//Execute code
});
}

但是第一个“initTimer”永远不会被触发。当我再次执行第一个函数(initModalTimer)时,一切正常。

我在 Reddit 上发现了类似的问题有人建议“事件总线监听 $on 发生在 $emit 之后”。但我不明白这是什么意思。

最佳答案

我认为正在发生的事情是你的 initTimer监听器直到你的 <timer> 才被注册组件通过您的 v-else-if 呈现陈述。

您需要找到一种方法在触发事件之前注册该监听器,方法是将其注册到组件树的更上方,或者更早地包含计时器组件,但在需要时将其隐藏起来。

关于javascript - Vue $on 事件不会在第一次使用事件总线时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57218294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com