由于vue2.0移除了1.0中调度和美元的广播这两个组件之间通信传递数据的方法,官方的给出的最简单的升级建议是使用集中的事件处理器,而且也明确说明了一个空的vue实例就可以做到,因为vue实例实现了一个事件分发接口。
请直接看代码,在初始化web应用程序的时候,给数据添加一个名字为eventhub的空vue对象
新Vue ({ 埃尔:“#应用”, 路由器, 呈现:h=比;h(应用程序), 数据:{ eventHub:新Vue () } })
好的这个时候你就可以一劳永逸了,在任何组件都可以调用事件发射接受的方法了。
如何获取到这个空的vue对象eventhub呢。在组件里面直接调用这个
某一个组件内调用事件触发
//通过。美元root.eventHub获取此对象//调用美元发出方法 root.eventHub美元。释放美元(YOUR_EVENT_NAME, yourData)
另一个组件内调用事件接受,当然在组件销毁时接触绑定,使用了美元方法
root.eventHub美元。美元(“YOUR_EVENT_NAME”(yourData)=祝辞{ 处理(yourData) })
遇到一个问题,考虑特定场景:
跳转路由之前我们调用了美元发出方法,这个方法在一组件里面处理数据,但是一组件绑在美元定事件之美元前发出事件已经发射,所以这会导致一直接受不到消息,看来这个事件绑定有时效性问题,你可以setTimeout来做一下延时,但是这个特别奇怪,那就把数据存到商店然后等一组件加载完了再去取....
官方文档请点击我
记录> Vue.prototype。eventHub=Vue.prototype美元。美元eventHub | |新Vue ()
当然我们可以定义其他的全局变量比。如当前应用的系统配置文件,名字为sysconfig。json,你可以这样定义
Vue.prototype。配置=Vue.prototype。美元配置| |要求(路径/sysconfig.json)
这样我们在组件内部就可以直接调用eventHub美元和美元配置对象了。
比如在安装函数里面直接console.log (config.yourKey美元)
记录> 新webpack.DefinePlugin ({ 配置:需要(“路径/sysconfig.json”) }); >之前
然后我们也可以在全局内使用配置对象了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。