淘客网站推广免备案,湖南省郴州市有几个县,网站规划建设实训,青岛大型网站建设全局事件总线 功能#xff1a;可以解决所有组件之间通信传数据的问题原理#xff1a;通过一个共享对象#xff0c;将所有组件全部绑定到对象上#xff0c;即可通过这个对象实现组件与组件之间的传递数据#xff0c;而这个共享对象叫做全局事件总线。
如何分清楚谁是发送方…全局事件总线 功能可以解决所有组件之间通信传数据的问题原理通过一个共享对象将所有组件全部绑定到对象上即可通过这个对象实现组件与组件之间的传递数据而这个共享对象叫做全局事件总线。
如何分清楚谁是发送方谁是接收方谁用绑定事件谁用触发事件
假设我向你传送数据我是发送方你是接收方。 若我不向你发送数据则你就不知道数据的内容无法拿取绑定。我不触发你不能绑定因为你没有数据只有我发送数据给你你才能知道数据的内容才能对数据进行拿取。谁发送谁触发谁拿取谁绑定
共享对象创建位置main.js文件
第一种方法创建vc对象
// 获取 VueComponent 构造函数
const VueComponentConstructor Vue.extend({})
// 创建 vc 对象
const vc new VueComponentConstructor()
// 使所有组件共享 vc 对象
Vue.prototype.$bus vc第二种方法常用使用原有的vm对象 在Vue初始化时beforeCreate创建共享对象vm
new Vue({el : #app,render: h h(App),beforeCreate(){// this指向的是vmVue.prototype.$bus this}
})以上代码中出现的$bus有什么作用
$bus事件总线用来管理总线。其他组件在调用vc共享对象时可通过this.$bus.$on() 和 this.$bus.$emit()来绑定或触发事件
数据发送方触发事件$emit
templatedivbutton clicktriggerEvent触发事件/button/div
/templatescriptexport default {name : Vip,data(){return{name : zhangsan}},methods : {triggerEvent(){this.$bus.$emit(event, this.name)}}}
/script数据接收方绑定事件$on
templatedivVip/Vip/div
/templatescriptimport Vip from ./components/Vip.vueexport default {name : App,mounted() {this.$bus.$on(event, this.test)},methods : {test(name){console.log(name);}},components : {Vip}}
/scriptconsole.log(name);}},components : {Vip}}
/script