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 相关文章推荐
一个可以兼容IE FF的加为首页与加入收藏实现代码
Nov 02 Javascript
JS 页面计时器示例代码
Oct 28 Javascript
js拖拽一些常见的思路方法整理
Mar 19 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
js树插件zTree获取所有选中节点数据的方法
Jan 28 Javascript
Javascript点击按钮随机改变数字与其颜色
Sep 01 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
JS实现仿百度文库评分功能
Jan 12 Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
webpack打包node.js后端项目的方法
Mar 10 Javascript
jquery获取img的src值实例介绍
Jan 16 jQuery
vue移动端下拉刷新和上滑加载
Oct 27 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中var_dump方法的使用详解
2013/06/24 PHP
Laravel 5 框架入门(一)
2015/04/09 PHP
php利用嵌套数组拼接与解析json的方法
2017/02/07 PHP
PHP中empty,isset,is_null用法和区别
2017/02/19 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
在JavaScript并非所有的一切都是对象
2013/04/11 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
javascript按钮禁用和启用的效果实例代码
2017/10/29 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
Jquery获取radio选中值实例总结
2019/01/17 jQuery
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
详解Django rest_framework实现RESTful API
2018/05/24 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
使用Python控制摄像头拍照并发邮件
2019/04/23 Python
python将视频转换为全字符视频
2019/04/26 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
Html5画布_动力节点Java学院整理
2017/07/13 HTML / CSS
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
教师年终个人自我评价
2013/10/04 职场文书
公司薪酬管理制度
2014/01/31 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
公安机关起诉意见书
2015/05/20 职场文书
学习经验交流会总结
2015/11/02 职场文书
go类型转换及与C的类型转换方式
2021/05/05 Golang
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL