Vue2.0实现组件之间数据交互和通信操作示例


Posted in Javascript onMay 16, 2019

本文实例讲述了Vue2.0实现组件之间数据交互和通信操作。分享给大家供大家参考,具体如下:

Vue2.0组件之间数据交互和通信。

Vue2.0废弃了dispatch 和 $broadcast,如何在实现组件之间的数据交互和通信?下面是一个简单的demo解决了这个问题。

事件中心(evengtHub.js):

//定义事件中心,在模板通信是使用。
import Vue from 'vue';
export default {
  bus: new Vue()
}

父组件:

<div>
  <!--msg必须跟子组件的msg参数一致,@msg是子组件向父组件传参数的接口,:msg是父组件向子组件传参数的接口-->
  <child1 @msg='getMsg' :msg1='msg1'></child1>
  <child1 ref='child2'></child2>
<div>
<script>
import bus form 'eventHub'
  componets: {
    child1: require('child1'),
    child2: require('child2');
  },
  data() {
    return: {
      msg1: 'hello'
    }
  },
  methods: {
    getMsg(el) {
       this.$refs.child2.drop(el);
       //父组件调用child2组件的drop方法,传递el参数,子组件和子组件之间的通信
    }
  }
</script>

子组件1

<template>
  <div class='child1' @click='sendMsg'>{{msg}}<div>
</template>
<script>
import bus form 'eventHub';
//props属性用于子组件接收父组件传过来的参数
  props: {
    msg1 :String
  },
  methods: {
    this.bus.$emit('add', event.target);//此方法可以通过子组件1在任意组件内响应点击事件。
    this.$emit('msg', event.target);//发送数据给父组件,这个方法的'msg'参数必须和父组件的@msg保持一致。
  }
</script>

子组件2

<template>
  <div class='child2'><div>
</template>
<script>
import bus form 'eventHub'
methods: {
  drop(el) {
    console.log(el);//打印出child1的div元素
  }
},
created() {
  this.bus.$on('add',() => {
    console.log('响应child1的点击事件');
  })
}
</script>

上面的例子中包括父子组件之间互相传参数和组件之间的通信,更好的组件通信事件请使用vuex。

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
Oct 11 Javascript
extjs_02_grid显示本地数据、显示跨域数据
Jun 23 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
jquery及js实现动态加载js文件的方法
Jan 21 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
jQuery图片轮播实现并封装(一)
Dec 03 Javascript
Angularjs为ng-click事件传递参数
Jun 15 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
Oct 08 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
Aug 28 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
Vue-CLI项目中路由传参的方式详解
Sep 01 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 #Javascript
JS左右无缝轮播功能完整实例
May 16 #Javascript
Node.js Windows Binary二进制文件安装方法
May 16 #Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 #Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
May 16 #Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
May 16 #Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 #Javascript
You might like
超级简单的php+mysql留言本源码
2009/11/11 PHP
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
2014/12/26 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
JavaScript实现表格排序方法
2013/06/14 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
2016/09/06 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
python实现百度关键词排名查询
2014/03/30 Python
Python的面向对象思想分析
2015/01/14 Python
python中for语句简单遍历数据的方法
2015/05/07 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
Python之py2exe打包工具详解
2017/06/14 Python
python截取两个单词之间的内容方法
2018/12/25 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python实现学生信息管理系统源码
2021/02/22 Python
基于css3仿造window7的开始菜单
2010/06/17 HTML / CSS
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
Chinti & Parker官网:奢华羊绒女装和创新针织设计
2021/01/01 全球购物
什么是Smart Navigation?
2016/07/03 面试题
网络维护管理员的自我评价分享
2013/11/11 职场文书
绘画专业自荐信
2014/07/04 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
独生子女证明范本
2015/06/19 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
HTML基础详解(上)
2021/10/16 HTML / CSS
Spring Bean是如何初始化的详解
2022/03/22 Java/Android