最近在研究vue.js,总体来说还算可以,但是在web开发群里有一些人问在单文件组件开发模式中非父子组件如何传值的问题,今天在这里讲讲,希望对大家有所帮助! 
在官网api中的这段讲解很少,也很模糊;官网中说明如下:

非父子组件通信:
有时候两个组件也需要通信 (非父子关系)。在简单的场景下,可以使用一个空的 Vue 实例作为中央事件总线:
var bus = new Vue();
// 触发组件 A 中的事件
bus.$emit('id-selected', 1)
// 在组件 B 创建的钩子中监听事件
bus.$on('id-selected', function (id) {// ...
})

那么这一段在单文件组件开发模式中具体怎么用呢? 
首先在main.js中加入data,如下:

new Vue({el: '#app',router,template: '<App/>',components: { App },data:{bus:new Vue()}
})

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

<template><div class="title" @click="change(msg)">{{ msg }}</div>
</template>
<script>export default {name: 'first',data() {return {msg: '我是首页'}},methods: {change(text) {this.$root.bus.$emit("hehe", text)}}}</script>

然后在另一个组件内调用on事件接收,当然在组件销毁时解除绑定,使用on事件接收,当然在组件销毁时解除绑定,使用off方法

<template><h1>{{ msg }}</h1>
</template>
<script>export default {name: 'second',data() {return {msg: '我是第二页'}},created() {let that = this;this.$root.bus.$on("hehe", function (t) {that.msg = that.msg + t})}}</script>

然后点击的时候就能传递值了,还等什么,快来试试吧!欢迎加入前端交流群496522155,备注:前端 
希望对你有帮助,~溜了~

原文:https://blog.csdn.net/weixin_37794497/article/details/77337613  

  

  

  

转载于:https://www.cnblogs.com/robinunix/p/10876789.html

vue.js单文件组件中非父子组件的传值相关推荐

  1. Vue.js 单文件组件

    单文件组件 介绍 在很多 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这 ...

  2. 丁鹿学堂:前端进阶学习vue3最新教程之vue的单文件组件深入理解

    在vue3中,template模版中的html代码,并不能直接在网页中执行,而是会在项目运行时,在浏览器中被编译为js 的函数去执行. 问题:在template模版中写html,体验很差,智能提示都不 ...

  3. vue中非父子组件传值

    vue中非父子组件传值 我们使用 $emit发送数据使用 $on监听数据vue非父子组件传值1 创建公共实例化对象const bus=new Vue()2 在需要发送数据的组件中自定义方法 使用bus ...

  4. 浏览器 调用 vue 组件_父子组件的通信

    在前端vue框架中,我们常常使用多个页面组成一个组件来创建项目.每个组件都有其自己的功能,基于组件的体系结构使开发和维护应用程序变得容易.在开发过程中,您可能会遇到需要与其他组件共享数据的情况.在本文 ...

  5. vue的组件化+父子组件的通信

    文章目录 1.注册组件的基本步骤 1.1 原始的创建方法 1.2语法糖创建方法 2.全局组件与局部组件 2.1 全局组件 2.2 局部组件 2.3语法糖局部组件(最简写法) 3. 父子组件 4.组件中 ...

  6. vue.js render函数怎么传入自定义组件

    vue.js render函数怎么传入自定义组件 和定义子组件的用法一样 import Test from '@/components/Test' export default { render:(h ...

  7. vue上传zip文件到服务器,vue.js zip文件上传

    vue.js zip文件上传 内容精选 换一换 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助.接口参考文档详细介绍了每个接口的参数和使用方法.在O ...

  8. 组件之间父子组件传值

    组件之间父子组件传值 在components新建父组件和子组件 在父组件里引入子组件 子组件接收父组件中的数据,用props 在子类props里定义接收的参数 在子组件标签上引用 然后在父组件写上准备 ...

  9. html引用单文件组件,vue之单文件组件 纯网页方式引入

    上一节的vue组件开发是把组件内容统一放到了一个js文件里面 里面写上模板字符串(引用组件) 这种方式还需要拼接转义 写法非常丑陋 vue贴心的帮我们封装了单文件组件 可以不用再模板里面拼接字符串 下 ...

最新文章

  1. CSS基础篇--css reset重置样式有那么重要吗?
  2. PAT (Basic Level) 1055 集体照(模拟,好题)
  3. saltstack-部署
  4. 使用JDBC来实现一个简单的增删改查
  5. short s1=1;s1+=1问题
  6. LNMP环境--搭建Discuz论坛
  7. SpringBoot基础教程1-1-2 配置文件介绍
  8. linux硬盘格式哪个好,linux使用哪种硬盘分区格式会比较好
  9. 图像压缩编码码matlab实现——DM编码
  10. 使用Java程序实现计算器
  11. 全新AIY Edge TPU开发板惊艳亮相,今秋发布!
  12. android手机系统怎么刷机包,安卓系统怎么刷机?安卓系统手机通用刷机教程
  13. 编译安装LNMP及报错解决
  14. 就北京来说,有对 PM2.5 有用的空气净化器么?
  15. 闲情雅致-(诗词篇1)
  16. 数据结构:通过hash表方法创建母猪信息录入系统
  17. mysql基础单词总结
  18. 技术分享|数据分析与可视化
  19. 【PAT1012B】数字分类
  20. JLINK转接板便携精简版

热门文章

  1. JavaScript ECMAScript规范里对于分号semicolon用法最权威的定义
  2. webpack里JavaScript文件编译的调试
  3. java+mysql性能优化_Java培训实战教程之mysql优化
  4. 日语python_边学日语边学python语法
  5. c语言wb和wb 区别,C语言文件 w+与wb+区别
  6. 微软服务器问题,微软服务器内存溢出问题 | 【韩涛博客】
  7. windows python安装opencv_OpenCV开发(1)——OpenCV3.4+Python3.5+Windows10安装问题解决
  8. with dlz mysql 条件_Flask Bind-DLZ + Mysql DNS管理平台
  9. mysql 表 地图_报表中的地图怎么做?
  10. 收集bug开源框架_划重点 | 小程序框架全面测评