gpt4 book ai didi

vue.js - 如何在nuxt布局中监听页面$emit?

转载 作者:行者123 更新时间:2023-12-04 12:32:33 25 4
gpt4 key购买 nike

Nuxt 2.15.6;我想通过动态切换根布局中的菜单组件来切换菜单组件的布局。default.vue

<template>
<component :is="navLayout"></component>
<Nuxt :navLayout="navLayout = $event" />
</template>
data() {
return {
navLayout: "default"
};
},
在 的“子”组件中,我的页面例如。 login.vue (/login) I $emit一个事件;
...
import nav2 from "@/layouts/nav2";
...
created() {
this.$emit("navLayout", nav2);
},
现在好像是 <Nuxt>组件无法捕获事件。我也尝试拨打 <Nuxt @navLayout="test()" />方法。
如何避免 this.$root.$emit(...);在我的 login.vue
this.$root.$on("navLayout", navLayout => {
this.navLayout = navLayout;
});
default.vue ?

最佳答案

编辑:这个答案工作正常,因为看起来你现在不能这样做:https://github.com/nuxt/nuxt.js/issues/8122#issuecomment-709443008
在子组件中

<button @click="$nuxt.$emit('eventName', 'nice payload')">nice</button>
在默认布局上
<script>
export default {
created() {
this.$nuxt.$on('eventName', ($event) => this.test($event))
},
methods: {
test(e) {
console.log('test ok >>', e)
},
},
}
</script>

设置监听器 Nuxt本身没有 不是 工作。
<Nuxt @navLayout="navLayout = $event" :navLayout="navLayout" />
我可以看到事件发生并且监听器插入 <nuxt></nuxt>但它不会触发监听器的任何方法......
PS:适用于 <nuxt-child></nuxt-child>至少。

关于vue.js - 如何在nuxt布局中监听页面$emit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67817006/

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