ITPub博客

首页 > 应用开发 > Html/css > Vue 事件中央总线

Vue 事件中央总线

原创 Html/css 作者:YangCode 时间:2022-10-25 15:38:09 0 删除 编辑

方式1: 全局事件总线

1.在main.js文件中定义

new Vue({
 el: '#app',
 router,
 store,
 render: h => h(App),
 beforeCreate(){
   Vue.prototype.$bus = this
 }
})


2.使用方法


// 传值 (可以在你定义的方法中传值)

this.$bus.$emit('定义名称',值)


// 监听数据 (在mounted监听数据)

this.$bus.$on('定义名称' val=>{})


// 销毁(在beforeDestroy销毁)

this.$bus.$off('定义名称')


方式2:

1.在main.js的同级建一个bus.js

import Vue from "vue"
export default new Vue

2.在main.js引入

// 事件中央总线传值

Vue.prototype.bus = new Vue();

3.使用方法

// 1.引入(传值和监听数据部分都需引入bus.js文件)

import Bus from '@bus.js'


// 传值(我是在beforeDestroy中传值的)

Bus.$emit('定义名称',值)


// 监听数据 (我在beforeCreate 中监听数据)

Bus.$on('定义名称',val=>{})


//销毁(在监听数据页面的 beforeDestroy 中销毁)

Bus.$off('定义名称')


扩展: 还可以使用消息订阅与发布的方式 实现任意组件间的传值


方法:


// 下载插件 pubsub-js

npm i pubsub-js --save


// 在需要传和监听的页面引入

import pubsub from 'pubsub-js'


// 发布(传值)

pubsub.publish('xxx',值)


// 订阅(接收)

this.pubId = pubsub.subscribe('xxx',(msgName,data)=>{

 // 注意 msgName的值为你定义的 xxx  data为你真正传过来的 值

})


// 销毁 (在beforeDestroy)

pubsub.unsubscribe(this.pubId)



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70023408/viewspace-2920196/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2022-10-25

  • 博文量
    32
  • 访问量
    16338