通过Bus总线机制实施非父子组件通讯
1、创建一个空实例(Bus中央事件总线也可以叫中间组件)
2、利用$emit $on 触发和监听事件实现非父子组件的通信
组件之间使用this.$bus.$on传值之前需要先this.$bus.$off注销事件
即:
this.$bus.$off('hiHeader').$on('hiHeader', (val) => {
this.sending = val
})
详见:组件之间使用this.$bus.$on传值之前需要先this.$bus.$off注销事件

一、通过this.$bus.$on()方式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">// 定义通讯中间件Vue.prototype.$bus = new Vue()var myHeader = {template: `<div>我是头部|{{sending}}</div>`,data() {return {sending: ''}},created() {// 先解绑再绑定,防止多组件点击失效// 这里this.$bus.$on监听中间件获取数据this.$bus.$off('hiHeader').$on('hiHeader', (val) => {this.sending = val})}}var myFoot = {template: `<div>我是脚<button @click="sendToHeader">发信息给头部</button></div>`,methods: {sendToHeader() {// 触发hiHeader事件传递数据this.$bus.$emit('hiHeader', '我的头可不是面团捏的')}}}new Vue({el: '#app',components: {myHeader,myFoot},template: `<div><myHeader></myHeader><myFoot></myFoot></div>`})
</script></body>
</html>

二、通过this重定向

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">// 定义通讯中间件Vue.prototype.$bus = new Vue()var myHeader = {template: `<div>我是头部|{{sending}}</div>`,data() {return {sending: ''}},created() {// 重定向thisvar transfer = this// transfer.$bus.$off('hiHeader').$on('hiHeader', function (val) {//     transfer.sending = val// })transfer.$bus.$on('hiHeader', (val)=>{transfer.sending = val})}}var myFoot = {template: `<div>我是脚<button @click="sendToHeader">发信息给头部</button></div>`,methods: {sendToHeader() {// 触发hiHeader事件传递数据this.$bus.$emit('hiHeader', '我的头可不是面团捏的')}}}new Vue({el: '#app',components: {myHeader,myFoot},template: `<div><myHeader></myHeader><myFoot></myFoot></div>`})
</script></body>
</html>

转载于:https://blog.51cto.com/12012821/2401739

Vue入门八、非父子组件间通讯相关推荐

  1. 初识 Vue(18)---(非父子组件间的传值)

    非父子组件间的传值 常一个应用会以一棵嵌套的组件树的形式来组织:将一个大组件进行拆分 下图这种情况的组件间传值(父子组件间传值) 方法:父组件通过 Props 向子组件传值,子组件通过事件触发向父组件 ...

  2. 组件间数据交互——父组件向子组件传值( props属性值类型) 子组件向父组件传值-携带参数 || 非父子组件间传值

    父组件向子组件传值 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  3. bus.js非父子组件之间通讯

    bus.js非父子组件之间通讯 区别: bus.js就是一个公共的vue实例专门处理emit和on事件. vuex.js是做全局数据处理的,是指限定了对公共数据的使用处理方法,统一管控 vue中非父子 ...

  4. vue学习【非父子组件传值问题(Bus/总线/观察者模式)】

    如果两个组件是父子关系,就可以通过props的方式传值. 父组件通过props向子组件传值,子组件通过事件触发向父组件传值 那么如果两个组件之间不具备父子关系,该如何传值呢?任何一个网页都可以拆分成几 ...

  5. React组件通信-非父子组件间的通信

    文章目录 React非父子组件通信 小知识点的补充 Context应用场景 Context相关API Context使用流程 React非父子组件通信 在React中, 非父子组件传递是通过一个API ...

  6. vue入门学习篇——父子组件通信

    Vue父子组件之间通信的原理 父组件:props down -- 父组件通过props向下传递数据给子组件 子组件:events up -- 子组件通过事件events向上传递数据给父组件 下面我们来 ...

  7. vue3非父子组件间传值

    本示例基于vue3 使用要点:发送数据---- $bus.emit('password',num) 接收数据----在onMounted() 中  $bus.on('password',(data)= ...

  8. vue组件间传值: 父传子、子传父、非父子组件传值

    父组件向子组件传值 // 父组件通过属性将值传递给子组件 <template><div><closePopup :optionsID="optionsID&qu ...

  9. Vue3(撩课学院)笔记02-创建组件,全局组件,局部组件,父子组件,组件标签化,组件的data数据共享,组件间通讯,props,父传子$ref,子传父$parent

    1.创建一个组件 首先要创建一个根组件进行挂载 再创建一个子组件,完成子组件的逻辑 子组件主要使用template模板来完成布局和逻辑 把子组件通过根组件.component的方法挂载到根组件上 &l ...

最新文章

  1. 前端Vue学习之路(二)-Vue-router路由
  2. mysql安装了很久_mysql-5.7.21-winx64安装过程(整了好久原因是没关闭防火墙)
  3. 类和对象—对象特性—深拷贝与浅拷贝
  4. window使用笔记
  5. label美化css,表单label美化代码
  6. 如何通过apache运行php,apache-2.2 – 如何使所有URL通过单个PHP文件运行?
  7. jsp页面根据json数据动态生成table
  8. 上传问题分析2--文件重名
  9. RabbitMQ基础概念详解
  10. SonarQube 规则的挂起与激活
  11. OpenCV中的凸包
  12. 教资科一科二知识点 0312
  13. 通过里程碑式管理,控制软件项目管理进度
  14. python接口测试_【Python自学】Python接口自动化测试的学习 - 伊凡Ivan
  15. cass软件注记的字体类型和字体大小的问题
  16. flexbuilder 4.6破解
  17. [HDU]6069 Counting Divisors
  18. [转载] 晓说——第25期:看美国系列之“两极分化的黑人”
  19. 【附源码】计算机毕业设计java疫情期间优化旅游平台设计与实现
  20. mysql.js回调函数_js回调函数(callback)

热门文章

  1. 请求https错误: unable to find valid certification
  2. websphere 内存溢出处理
  3. java怎么通过ip地址查具体地址_制作通过IP 查询地址的java版程序
  4. centos mysql密码设置密码_CentOS下设置MySQL的root密码
  5. 理解 Memory barrier(内存屏障)无锁环形队列
  6. .net 文件服务器系统,File-service基于ASP.NET Core的可伸缩、通用的文件服务器
  7. java a =a-=aa_Java求s=a+aa+aaa+aaaa+aa...a的值
  8. ztree 自定义参数_zTree树插件使用方法及自定义控件实践_蓝戒的博客
  9. 【】python时间处理;PYTHON定时任务合集
  10. php: xampp安装对应的phalcon版本(3.2.2-php5.6):比如redis-php5.6, php_igbinary-5.6