1、新建event-bus.ts文件
1 2 3 | import Vue from 'vue' Vue.prototype.$bus = new Vue(); |
可以全局使用
2、nuxt.config.js中添加eventbus变量
可以通过root全局使用
1 2 | plugins: ['~/plugins/swiper.ts', '~/plugins/element-ui.ts', '~/plugins/event-bus.ts'], //因为event-bus文件在plugins的文件夹中 |
3、需要传递值的文件
1 2 3 4 5 6 | //引入root 不用import eventbus文件,直 接使用根中的$bus属性,利用$emit传值 setup(props, { root }) { function setContactDialog() { root.$bus.$emit('contactDialogVisible', true); } } |
4、需要接收值的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 | //import ref 监听变量 import { defineComponent, ref, reactive, useContext, computed } from 'nuxt-composition-api'; setup(props, { root }) { const contactDialogVisible = ref(false); //监听可变化的属性 root.$bus.$on('contactDialogVisible', function (val) { contactDialogVisible.value = val; }); return { contactDialogVisible } } |