博客
关于我
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/

你可能感兴趣的文章
oracle 使用leading, use_nl, rownum调优
查看>>
oracle 修改字段类型方法
查看>>
Oracle 修改数据库表数据提交之后进行回滚
查看>>
UML-总结
查看>>
oracle 内存参数示意图
查看>>
Oracle 写存储过程的一个模板还有一些基本的知识点
查看>>
UML- 配置图(部署图)
查看>>
oracle 切割字符串加引号_使用Clean() 去掉由函数自动生成的字符串中的双引号...
查看>>
Oracle 创建 DBLink 的方法
查看>>
oracle 创建job
查看>>
oracle 创建一个用户,只能访问指定的对象
查看>>
oracle 创建双向备份,Materialized View 物化视图实现 Oracle 表双向同步
查看>>
oracle 创建字段自增长——两种实现方式汇总
查看>>
Oracle 升级10.2.0.5.4 OPatch 报错Patch 12419392 Optional component(s) missing 解决方法
查看>>
oracle 去重
查看>>
oracle 可传输的表空间:rman
查看>>
Oracle 启动监听命令
查看>>
Oracle 启动阶段 OPEN
查看>>
Oracle 在Drop表时的Cascade Constraints
查看>>
Oracle 在Sqlplus 执行sql脚本文件。
查看>>