博客
关于我
Vue使用bus进行组件间、父子路由间通信
阅读量:374 次
发布时间:2019-03-05

本文共 682 字,大约阅读时间需要 2 分钟。

项目中路由间通信解决方案

在项目中遇到需要在父路由中调用子路由中的方法,这类似于组件间的通信。在子路由中可以直接通过 this.$parent.xxx 调用父页面中的方法,但反向操作则较为复杂。通过引入 Bus(或 Vue 实例)成功解决了这一问题,下文将详细介绍实现方法。

一、引入 Bus 实例

首先,在项目的 src 文件夹下创建 utils 目录,并新建 bus.js 文件:

import Vue from 'vue'const bus = new Vue()export default bus

二、子路由中监听

在子路由中引入 Bus 实例:

import bus from "@/utils/bus"

在子路由的生命周期钩子中(通常使用 mounted 方法)注册监听事件:

mounted() {  // 在父页面使用的方法名称  bus.$on('test', this.test)}

三、父页面触发方法

在父页面中引入 Bus 实例:

import bus from "@/utils/bus"

在需要触发子路由方法的父页面中:

methods: {  createGroup() {    bus.$emit('test')  }}

四、注意事项

由于子路由在 mounted 钩子中注册监听,可能存在多次监听的情况,建议在注册前取消原有的监听:

mounted() {  bus.$off('test') // 取消之前的监听  bus.$on('test', this.test)}

这种方法能够确保事件监听的唯一性,避免多次触发问题。

转载地址:http://vtmg.baihongyu.com/

你可能感兴趣的文章
openlayers 入门教程(八):Geoms 篇
查看>>
openlayers 入门教程(六):controls 篇
查看>>
openlayers 入门教程(十一):Formats 篇
查看>>
openlayers 入门教程(十三):动画
查看>>
openlayers 入门教程(十二):定位与轨迹
查看>>
openlayers 入门教程(十五):与 canvas、echart,turf 等交互
查看>>
openlayers 入门教程(十四):第三方插件
查看>>
openlayers 入门教程(四):layers 篇
查看>>
OpenLayers 项目分析(三)-OpenLayers中定制JavaScript内置类
查看>>
Openlayers下载与加载geoserver的wms服务显示地图
查看>>
Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
查看>>
Openlayers中使用Cluster实现点位元素重合时动态聚合与取消聚合
查看>>
Openlayers中使用Cluster实现缩放地图时图层聚合与取消聚合
查看>>
Openlayers中使用Image的rotation实现车辆定位导航带转角(判断车辆图片旋转角度)
查看>>
Openlayers中使用Overlay实现点击要素弹窗并且弹窗随之移动
查看>>
Vmware系列&虚拟机系列【仅供参考】:使用vCenter Auto Deploy制作ESXI系统封装(适合高版本vSphere)
查看>>
Openlayers中加载GeoJson文件显示地图
查看>>
Openlayers中加载Geoserver切割的EPSG:900913离线瓦片图层组
查看>>
Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
查看>>
Openlayers中多图层遮挡时调整图层上下顺序
查看>>