vue bus 的使用】的更多相关文章

简单的状态管理,可以用vue bus vue bus可以实现不同组件间.不同页面间的通信,比如我在A页面出发点击事件,要B页面发生变化,使用方法如下: 全局定义:main.js window.eventBus = new Vue()   在A页面的事件中触发: eventBus.$emit('todo', '123')   在B页面的created中开始监听,越早监听越好: eventBus.$on('todo', (params) => {          console.log(param…
1.在main.js中注册全局的bus  Vue.prototype.bus=new Vue(); 2.在组建中使用 子组建使用:this.bus.$emit('自定义事件名',data) methods:{        handleClicks(){        this.bus.$emit('openMenu',true)       } } 父组建使用:  this.bus.$on("自定义事件名", msg => {}) mounted() {    this.bus…
有时候两个组件也需要通信(非父子关系).当然Vue2.0提供了Vuex,但在简单的场景下,可以使用一个空的Vue实例作为中央事件总线. 参考:http://blog.csdn.net/u013034014/article/details/54574989?locationNum=2&fps=1 例子:https://segmentfault.com/q/1010000007491994 <div id="app"> <c1></c1> <…
vue中的bus事件,一般作为中央事件总线来使用 简单例子:比如在A,B组件为兄弟组件,现在A要调用B的中C事件 1.创建一个bus.js 内容: import Vue from 'vue' const Bus = new Vue() export { Bus } 2.在A,B组件中引入bus.js import { Bus } from 'bus' 3.在A组件中定义要调用B事件的bus事件名 例如:Bus.$emit('callC') 4.在B组件中调用C方法 Bus.$on('callC'…
对于非父子组件之间的传值 通常使用VUEX 和总线等方式解决 这里我聊聊发布订阅模式(总线) <body> <div class="app"> <child content = "dell"></child> //这两个子组件之间可以互相传值 <child content = "lee"></child> </div> </body> <scri…
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('自定义事件名',回调函数)监听. 回调函数里可以接受参数…
1 ,新建bus.js 内容如下 2,bus.$emit 绑定数据 bus.$emit('tags', this.tagsList); 第一个参数为定义的变量,第二个为集合数据 3, 监听数据 bus.$on("tages",msg={ }) msg中是获取的上文中的集合数据 bus.js 用途 1 组件间的通讯,传承 (组件必须引入bus.js): 2 结合route路由对象,keep-alive 使用,开启多标签页数据缓存方案:…
非父子之间的组件传值,可以使用vuex.简单的状态管理,也可以用vue bus vue bus可以实现不同组件间.不同页面间的通信,比如我在A页面出发点击事件,要B页面发生变化,使用方法如下: 全局定义:main.js window.eventBus = new Vue()   在A页面的事件中触发: eventBus.$emit('todo', '123')   在B页面的created中开始监听,越早监听越好: eventBus.$on('todo', (params) => {      …
1 父传子   子组件  props:[‘自定义属性名’]   父组件  v-bind:自定义属性名="值"  理解 子组件创建一个自定属性   父组件使用vue指令绑定到 自定义属性上 2 子传父   子组件  $emit('自定义事件名',值)  父组件 v-on:自定义事件名=“方法名”  理解 子组件发布一个字自定义事件 发布一个值 父组件创建一个自定义事件的监听  监听到时获取传递过来的值  概念性的问题  可了解订阅者发布者模式 3 vue Bus 任意组件之间传值 vue…
直接看图说话 vue Bus总线 import Vue from 'vue';import VueBus from 'vue-bus';Vue.use(VueBus); 这是子组件要发到父组件的写法 组件一 this.$bus.emit('add-todo','这里是发送的数据'); 组件二 created(){ this.$on('add-todo',(data)=>{ console.log(data,'接收到的数据') }) }…
父组件 <template> <div id="app"> <div>详情内容</div> <button v-on:click="startCount">开始</button> <Info :startCountsub="startCountState" /> </div> </template> <script> impor…
Vue.js-组件化前端开发新思路 12017.04.14 18:31:25字数 6228阅读 5632 本文章是我最近在公司的一场内部分享的内容.我有个习惯就是每次分享都会先将要分享的内容写成文章.所以这个文集也是用来放这些文章的,顺便也当图床用. 1. 认识Vue.js Vue.js(读音 /vjuː/,类似于view)是一套构建用户界面的渐进式框架. 如果你有react或者Angular开发经验,你肯定不会对Vue.js感到太过陌生.Vue.js是踩在Angular和React肩膀上的后来…
四.兄弟组件间通信(event) 借助于一个公共的Vue的实例对象,不同的组件可以通过该对象完成事件的绑定和触发 var bus = new Vue(); bus.$emit()bus.$on() 熊大想要发消息给熊二, 接收方(熊二):事件绑定 bus.$on('customEvent',function(msg){ //msg就是通过事件 传递来的数据 })发送方(熊大):触发事件 bus.$emit('customEvent',123); 练习: 在熊二中 加上一个button, 点击按钮…
故事还是得从$emit说起,某一天翻文档的时候看到$emit的说明 触发当前实例上的事件?就是自身组件上的事件呗,在父子组件通信中,父组件通过props传递给子组件数据(高阶组件可以用provide和inject),由于这是单向数据流,为了保证复用组件的的时候出现数据错乱. 那么只能通过在子组件里面去触发一个事件,来让父组件自己更新数据. 那么问题来了,$emit不是说好的触发当前实例上的事件吗?那是怎么去能触发父组件数据更新的呢?难道父组件里也能$on对应的事件??? 其实不是的,看下面这个示…
pub/sub即观察者模式,有多重表现形式 1. Publisher/Subscriber2. Observer/Observable3. Listener(例如EventListener)4. EventBus5. EventEmitter EventBus这种不只是观察者模式,还包含了中介者模式,bus就是一个中介者,负责在消费者和生产者之间转发消息而Observer/Observable则是一种比较纯粹的观察者模式,一个对象要发布消息时候,就可以暴露一个Observable出来,一个想要接…
从vue1.x过来的都知道,在vue2.0中,父子组件间事件通信的$dispatch和$broadcase被移除了.官方考虑是基于组件树结构的事件流方式实在是让人难以理解,并且在组件结构扩展的过程中会变得越来越脆落.特别是在组件层级比较深的情况下.通过广播和事件分发的机制,就显得比较混乱了. 官方在废除的同时,也为我们提供了替换方案,包括实例化一个空的vue实例,使用$emit反应子组件上的状态变化 1.使用$emit触发事件 helloWorld.vue作为父组件,dialogConfigVi…
Mock.js: 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的原型分离以及用来提高自动化测试效率. 众所周知Mock.js因为两个重要的特性风靡前端: 数据类型丰富 支持生成随机的文本.数字.布尔值.日期.邮箱.链接.图片.颜色等. 拦截Ajax请求 不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数据. 注1:easy-mock,一个在线模拟后台的数据平台 Mo…
SPA项目开发--左侧树以及首页导航 1. Mock.js 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而今天的主角mockjs就可以做到这一点    Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的原型分离以及用来提高自动化测试效率.    众所周知Mock.js因为两个重要的特性风靡前端:   数据类型丰富   支持生成随机的文本.数字.布尔值.日期.邮箱.链接.图片.颜色等.   拦截Ajax请求   不需要修改既有代码,就可以拦截Ajax请求,…
Mock.js是个啥 前后端分离之后,前端迫切需要一种机制,不再需要依赖后端接口开发,而今天的主角mockjs就可以做到这一点 Mock.js是一个模拟数据的生成器,用来帮助前端调试开发.进行前后端的原型分离以及用来提高自动化测试效率. Mockjs官方(http://mockjs.com/) Mock.js使用步骤 安装mockjs依赖 npm install mockjs -D 下载成功之后package.json中会出现: "mockjs": "^1.0.1-beta3…
vue2中废弃了$dispatch和$broadcast广播和分发事件的方法.父子组件中可以用props和$emit().如何实现非父子组件间的通信,可以通过实例一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发和监听来实现组件之间的通信和参数传递. 首先需要在任意地方添加一个bus.js 在bus.js里面 写入下面信息 import Vue from 'vue' 2 export default new Vue; 在需要通信的组件都引入Bus…
问题描述:只要页面没有强制刷新,存在组件切换,bus.$on方法会被多次绑定,造成事件多次触发   触发bus.$on中绑定的方法.png   bus.$on多次绑定.png 解决办法:在每次调用方法前先解绑事件( bus.$off ),然后在重新绑定( bus.$on ) bus.$off("backUpLevel"); bus.$on('backUpLevel', () => { if(self.ONION.length <= 1){ self.jumpSubDir()…
昨日内容回顾 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.…
点击大儿子(头部组件的年月日,下面的都要变化) 就相当于点击了年月日之后,下面的组件重新调接口,参数变化       1.首先随便哪儿写个bus.js 内容如下: import Vue from 'vue' export default new Vue; 2.在需要通信的组件都引入Bus.js (两兄弟都要引入) 如上图所示大儿子按钮触发事件,$emit 传数据,另一个兄弟组件mounted接受,$on接受数据搞定…
中央事件总线 - 就是一个名字可以叫做bus的vue空实例,里边没有任何内容: var bus = new Vue(); 人如其名,她就像一个公交车一样,来回输送人,将a站点的A输送到b站点,再将b站点的B输送到a站点: 这里a,b站点就像父.子组件,也像兄.弟组件,或者像两个没有任何亲戚关系的任何组件: 而A,B就像是各个组件内部要传输的数据或者要执行的命令信息,靠bus来通信. 如果有父子组件通信知识基础的,应该记得当初父子组件通信,父组件中用$on监听,子组件中用$emit发射. 现如今父…
1.父子组件之间进行通讯: 父组件通过属性和子组件通讯,子组件通过事件和父组件通讯.vue2.x只允许单向数据传递. 先定义一个子组件AInput.vue: <template> <div> <input @input="handleInput" :value="value"/> </div> </template> <script> export default { name:'AInput'…
前端vue项目中,各个组件(非父子关系也可)之间可以通过Bus进行事件通信. main.js中: import Vue from 'vue' const Bus = new Vue(); const app = new Vue({ el: '#app', data: {Bus}, router, components: {App}, template: '<App/>' 进过如上配置后即可在各个组件中通过如下: this.$root.Bus.$emit("事件名", 参数1…
在利用vue组件进行事件监听时发现,如果对N个vue组件实例的bus总线绑定同一事件的回调函数,触发任意组件的对应事件,回调函数至少会被执行N次,这是为什么呢? 为此,调研了普通对象的事件绑定和触发实现方式,参考:JavaScript实现自定义对象的自定义事件. 其基本思想就是:设计一个原型对象,作为基类,其重点属性包括:一个_events对象数组属性,一个addEventListener方法,一个fireEvent方法,具体用途如下: _eventys:对象数组属性,用于存储不同事件的处理函数…
使用:兄弟组件之间传值: 安装: npm install vue-bus 在main.js 中引入vuebus: import Vue from 'vue'; import VueBus from 'vue-bus'; Vue.use(VueBus); 在组件中使用 触发事件: this.$bus.emit("onslected",params) 应对事件: mounted:function(){ this.$bus.on("onslected",function(…
动态组件中用总线Bus的坑 在我们的项目总难免会遇到用动态组件,这里就拿vue官方的例子为例,我们欲在组件中添加总线bus(其实官方推荐的vuex更好用,但是有时候我们只需要传一个小状态,不需要用vuex),首先要mian.js 中创建一个总线Bus(当然这里一般要把Bus封装一下放在一个单独的js中,这里单纯只是为了演示,就在main.js中创建一个全局的EventBus) import Vue from 'vue' import App from './App' import router…
关于组件通信我相信小伙伴们肯定也都很熟悉,就不多说了,对组件通信还不熟悉的小伙伴移步这里. 在vue2.0中 $dispatch 和 $broadcast 已经被弃用.官方文档中给出的解释是: 因为基于组件树结构的事件流方式实在是让人难以理解,并且在组件结构扩展的过程中会变得越来越脆弱.这种事件方式确实不太好,我们也不希望在以后让开发者们太痛苦.并且$dispatch 和 $broadcast 也没有解决兄弟组件间的通信问题. 官方推荐的状态管理方案是 Vuex.不过如果项目不是很大,状态管理也…