vue.js单文件组件中非父子组件的传值实例


Posted in Javascript onSeptember 13, 2018

最近在研究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>

然后点击的时候就能传递值了,还等什么,快来试试吧!

以上这篇vue.js单文件组件中非父子组件的传值实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)基础知识
Jun 02 Javascript
JavaScript 基础知识 被自己遗忘的
Oct 15 Javascript
Jquery时间验证和转换工具小例子
Jul 01 Javascript
Javascript图片上传前的本地预览实例
Jun 16 Javascript
学习AngularJs:Directive指令用法(完整版)
Apr 26 Javascript
微信小程序中单位rpx和rem的使用
Dec 06 Javascript
关于JS与jQuery中的文档加载问题
Aug 22 jQuery
Vue中this.$router.push参数获取方法
Feb 27 Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 Javascript
js 实现ajax发送步骤过程详解
Jul 25 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
微信小程序实现通讯录列表展开收起
Nov 18 Javascript
JavaScript数组方法的错误使用例子
Sep 13 #Javascript
vue仿element实现分页器效果
Sep 13 #Javascript
区别JavaScript函数声明与变量声明
Sep 12 #Javascript
详解js中Array的方法及技巧
Sep 12 #Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
Sep 12 #Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
Sep 12 #Javascript
angularjs的单选框+ng-repeat的实现方法
Sep 12 #Javascript
You might like
深入PHP magic quotes的详解
2013/06/17 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
Javascript load Page,load css,load js实现代码
2010/03/31 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
JavaScript中的cacheStorage使用详解
2015/07/29 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
django 删除数据库表后重新同步的方法
2018/05/27 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
搭建python django虚拟环境完整步骤详解
2019/07/08 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
python如何快速拼接字符串
2020/10/28 Python
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
后勤自我鉴定
2013/10/13 职场文书
毕业生机械建模求职信
2013/10/14 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
高中教师评语大全
2014/04/25 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
2014年个人总结范文
2015/03/09 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
JS中一些高效的魔法运算符总结
2021/05/06 Javascript