vue 事件总线(bus)】的更多相关文章

昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue({ el: '#app' }) 2. 注册局部组件 var app = new Vue({ el: '#app', components:{ 局部组件名:{ template: `...` } } }) 3. 传值 1. 父组件 --> 子组件 1. 父组件通过 v-bind:变量='值' 2.…
中央事件总线 - 就是一个名字可以叫做bus的vue空实例,里边没有任何内容: var bus = new Vue(); 人如其名,她就像一个公交车一样,来回输送人,将a站点的A输送到b站点,再将b站点的B输送到a站点: 这里a,b站点就像父.子组件,也像兄.弟组件,或者像两个没有任何亲戚关系的任何组件: 而A,B就像是各个组件内部要传输的数据或者要执行的命令信息,靠bus来通信. 如果有父子组件通信知识基础的,应该记得当初父子组件通信,父组件中用$on监听,子组件中用$emit发射. 现如今父…
项目中使用了事件总线eventBus来进行两个组件间的通信, 使用方法是是建立eventBus.js文件,暴露一个空的Vue实例,如下: import Vue from 'vue'export default new Vue();在需要通信的两个组件中分别import import bus from "common/utils/eventBus";然后就可以通过emit.on进行通信:如下: 一个组件中发射bus.$emit('SUBMITSEARCH_PEOPLE',this.sea…
一 项目结构 二 main.js import Vue from "vue"; import App from "./App.vue"; import Toolkit from "./plugins/toolkit"; Vue.config.productionTip = false; Vue.use(Toolkit); new Vue({ render: h => h(App) }).$mount("#app"); 三…
1.全局引入bus Vue.prototype.$bus = new.Vue() 2.组件间传值使用(在发送事件时接收组件会实时接收到, 可以用做兄弟组件间相互传值, 但页面跳转组件间有问题 通过$emit发送,$on接收) <div style="float: left; width: 15%; height: 100%;"> <div v-for="(item, index) in list" :key="index" @c…
前言 在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景: 我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么一种实现方式如上图所示:点击任意一个蓝色方框所示的专辑卡,发出 switchToAlbumIntetrfaceSig 给父级部件专辑卡视图,因为专辑卡视图有许多个分组,比如上图中为 aiko 分组,可能还有 柳井爱子 分组,那么这些视图都应该将 switchToAlbumInterfaceSig 转发给父级窗口我的音乐界面,我的音乐界面再转发给主界面,从…
在利用vue组件进行事件监听时发现,如果对N个vue组件实例的bus总线绑定同一事件的回调函数,触发任意组件的对应事件,回调函数至少会被执行N次,这是为什么呢? 为此,调研了普通对象的事件绑定和触发实现方式,参考:JavaScript实现自定义对象的自定义事件. 其基本思想就是:设计一个原型对象,作为基类,其重点属性包括:一个_events对象数组属性,一个addEventListener方法,一个fireEvent方法,具体用途如下: _eventys:对象数组属性,用于存储不同事件的处理函数…
1.全局定义bus 新建src/eventBus.js 文件 import Vue from 'vue' export default new Vue() //  全局引入mai.jsvue中央事件总线 import eventBus from './bus/eventBus' Vue.prototype.$eventBus=eventBus 2.使用 在A组件里定义 在mounted生命周期里通过this.$eventBus.$on('自定义事件名',回调函数)监听. 回调函数里可以接受参数…
定义:事件总线是实现vue任意组件之前传递参数的一种编程技巧,本质上就是组件的自定义事件.事件总线有很多种写法,具体的思路就是创造一个大家都可以访问到的公共的属性,在这个公共的属性上面可以调用$on,$off,$emit的方法来进行事件的绑定,触发以及解绑.如果a组件要传递一个参数个b组件,b就可以在公共属性上绑定一个自定义事件,然后a通过$emit来出发这个自定义事件,并且携带要传递给b的参数,b通过事件的回调来接受a传递的参数.这样a,b组件之前的通信其实是通过操作公共属性来实现的,同理通过…
公共事件总线eventBus的实质就是创建一个vue实例,通过一个空的vue实例作为桥梁实现vue组件间的通信.它是实现非父子组件通信的一种解决方案. 用法如下: 第一步:项目中创建一个js文件(我通常给它取个名字为bus.js),引入vue,创建一个vue实例,导出这个实例,代码如下(一共就两行): import Vue from 'Vue' export default new Vue   第二步:在两个需要通信的两个组件中分别引入这个bus.js      import Bus from…