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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
求解开jscript.encode代码的asp函数
Feb 28 Javascript
js数字输入框(包括最大值最小值限制和四舍五入)
Nov 24 Javascript
根据一段代码浅谈Javascript闭包
Dec 14 Javascript
javascript中的3种继承实现方法
Jan 27 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
Vue.js开发环境搭建
Nov 10 Javascript
从零开始学习Node.js系列教程二:文本提交与显示方法
Apr 13 Javascript
JavaScript之排序函数_动力节点Java学院整理
Jun 30 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
Apr 27 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
Apr 25 Javascript
vue编写简单的购物车功能
Jan 08 Vue.js
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
PHP4实际应用经验篇(1)
2006/10/09 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
PHP防盗链代码实例
2014/08/27 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
JavaScript生成指定范围随机数和随机序列的方法
2018/05/05 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
Vue触发式全局组件构建的方法
2018/11/28 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
初三化学教学反思
2014/01/23 职场文书
小学生评语大全
2014/04/18 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技