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

时间:2021-05-26

本文实例讲述了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程序设计有所帮助。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章