全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Vue2.0 事件派发与接收

由于vue2.0 移除了1.0中的$dispatch 和$broadcast 这两个组件之间通信传递数据的方法 ,官方的给出的最简单的升级建议是使用集中的事件处理器,而且也明确说明了 一个空的vue实例就可以做到,因为Vue 实例实现了一个事件分发接口.

请直接看代码,在初始化web app的时候,给data添加一个 名字为eventhub 的空vue对象

new Vue({
 el: '#app',
 router,
 render: h => h(App),
 data: {
  eventHub: new Vue()
 }
})

好的 这个时候 你就可以一劳永逸了,在任何组件都可以调用事件发射 接受的方法了.

如何获取到这个空的vue对象 eventhub呢.在组件里面直接调用这个

某一个组件内调用事件触发

//通过this.$root.eventHub获取此对象
//调用$emit 方法
this.$root.eventHub.$emit('YOUR_EVENT_NAME', yourData)

另一个组件内调用事件接受,当然在组件销毁时接触绑定,使用$off方法

this.$root.eventHub.$on('YOUR_EVENT_NAME', (yourData)=>{
  handle(yourData)
} )

遇到一个问题 ,考虑特定场景:

跳转路由之前我们调用了$emit方法,这个方法在A组件里面处理数据,但是A组件绑定$on事件之前 $emit事件已经发射,所以这会导致一直接受不到消息,看来这个事件绑定有时效性问题,你可以setTimeout来做一下延时,但是这个特别奇怪,那就把数据存到store然后等A组件加载完了再去取。。。。

官方文档请点击我

record on 12 24

在stackoverflow 发现一个更加简洁的方法,因为本质上vue是一个js对象,我们想保存一个全局对象,只需要在Vue的prototype上面增加一个属性即可,本质上所有Vue组件都是继承全局的Vue。只要在初始化Vue对象之前给原生Vue对象prototype增加属性,那样所有的组件(因为都是继承自它的实例)都可以访问到这个属性。相关资料请参考我之前的文章关于函数的构造函数和prototype<四>

在初始化Web app 之前 加上这样一句:

Vue.prototype.$eventHub= Vue.prototype.$eventHub || new Vue()

当然我们可以定义其他的全局变量.比如当前app的系统配置文件,名字为sysconfig.json,你可以这样定义

Vue.prototype.$config =Vue.prototype.$config||require('path/sysconfig.json')

这样我们在组件内部 就可以直接调用$eventHub 和 $config对象了。

比如 在mounted函数里面直接 console.log($config.yourKey)

record on 1.1.2017

刚才看到了webpack的插件里面有一个definePlugin 它可以帮我们定义全局的常量。

如何使用,很简单但是更好,我们不用去修改Vue对象:

new webpack.DefinePlugin({
 CONFIG: require('path/sysconfig.json')
});
 

然后我们也可以在全局内使用CONFIG对象了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Vue2.0  # 事件派发与接收 


相关文章: 网站制作公司排行榜,四大门户网站排名?  如何在景安云服务器上绑定域名并配置虚拟主机?  怀化网站制作公司,怀化新生儿上户网上办理流程?  建站主机解析:虚拟主机配置与服务器选择指南  Swift中switch语句区间和元组模式匹配  如何快速搭建高效WAP手机网站吸引移动用户?  中山网站推广排名,中山信息港登录入口?  如何打造高效商业网站?建站目的决定转化率  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在IIS中新建站点并配置端口与物理路径?  无锡营销型网站制作公司,无锡网选车牌流程?  Thinkphp 中 distinct 的用法解析  如何在建站之星绑定自定义域名?  如何通过老薛主机一键快速建站?  网站制作报价单模板图片,小松挖机官方网站报价?  Android滚轮选择时间控件使用详解  建站主机选哪家性价比最高?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  潮流网站制作头像软件下载,适合母子的网名有哪些?  广州商城建站系统开发成本与周期如何控制?  如何用PHP工具快速搭建高效网站?  如何在建站之星网店版论坛获取技术支持?  如何在自有机房高效搭建专业网站?  如何在腾讯云免费申请建站?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  html制作网站的步骤有哪些,iapp如何添加网页?  Swift中swift中的switch 语句  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  小型网站制作HTML,*游戏网站怎么搭建?  javascript基本数据类型及类型检测常用方法小结  攀枝花网站建设,攀枝花营业执照网上怎么年审?  湖北网站制作公司有哪些,湖北清能集团官网?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何在建站宝盒中设置产品搜索功能?  如何自定义建站之星模板颜色并下载新样式?  如何在新浪SAE免费搭建个人博客?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  宝塔新建站点为何无法访问?如何排查?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  电商网站制作公司有哪些,1688网是什么意思?  如何通过可视化优化提升建站效果?  php json中文编码为null的解决办法  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  韩国服务器如何优化跨境访问实现高效连接?  郑州企业网站制作公司,郑州招聘网站有哪些?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  ,在苏州找工作,上哪个网站比较好? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。