≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > vue.js

分析Vue2中组件间通信的解决全方案

人气:399 时间:2019-04-07

这篇文章主要为大家详细介绍了分析Vue2中组件间通信的解决全方案,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

 

前言

 

在Vue中组件是实现模块化开发的主要内容,而组件的通信更是vue数据驱动的灵魂,下面这篇文章将给大家介绍关于Vue2组件间通信的相关内容,下面话不多说,来一起看看详细的介绍。

 

组件通讯包括:

父子组件间的通信和兄弟组件间的通信。在组件化系统构建中,组件间通信必不可少的。

 

 

父组件--> 子组件

 

 

 

1. 属性设置

 

 

父组件关键代码如下:

代码如下:


<template>
 <Child :child-msg="msg"></Child>
</template>

子组件关键代码如下:

代码如下:


export default {
 name: 'child',
 props: {
 child-msg: String
 }
};

child-msg 为父组件给子组件设置的额外属性值,属性值需在子组件中设置props,子组件中可直接使用child-msg变量。

 

2. 子组件调用父组件

 

 

子组件通过 $parent 获得父组件,通过 $root 获得最上层的组件。

 

子组件--> 父组件

 

 

 

1. 发送事件/监听事件

 

 

子组件中某函数内发送事件:

代码如下:


this.$emit('toparentevent', 'data');

父组件监听事件:

代码如下:


<Child :msg="msg" @toparentevent="todo()"></Child>

toparentevent 为子组件自定义发送事件名称,父组件中@toparentevent为监听事件,todo为父组件处理方法。

 

2. 父组件直接获取子组件属性或方法

 

 

给要调用的子组件起个名字。将名字设置为子组件 ref 属性的值。

代码如下:


<!-- 子组件。 ref的值是组件引用的名称 -->
<child-component ref="aName"></child-component>

父组件中通过 $refs.组件名 来获得子组件,也就可以调用子组件的属性和方法了。

代码如下:


var child = this.$refs.aName
child.属性
child.方法()

父组件通过 $children 可以获得所有直接子组件(父组件的子组件的子组件不是直接子组件)。需要注意 $children 并不保证顺序,也不是响应式的。

 

Bus中央通信

 

 

目前中央通信是解决兄弟间通信,祖父祖孙间通信的最佳方法,不仅限于此,也可以解决父组件子组件间的相互通信。如下图:

【图片暂缺】

各组件可自己定义好组件内接收外部组件的消息事件即可,不用理会是哪个组件发过来;而对于发送事件的组件,亦不用理会这个事件到底怎么发送给我需要发送的组件。

 

先设置Bus

 

代码如下:


//bus.js 
import Vue from 'vue'
export default new Vue();

组件内监听事件:

代码如下:


import bus from '@/bus';

export default {
 name: 'childa',
 methods: {
 },
 created() {
 bus.$on('childa-message', function(data) {
 console.log('I get it');
 });
 }
};

发送事件的组件:

代码如下:


import bus from '@/bus';
//方法内执行下面动作
bus.$emit('childa-message', this.data);

Bus中央通信的方案各种情况下都可用,比较方便,具体内在原理后续更新说明。

 

总结

 

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者使用vue能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对四海网的支持。

本文来自:http://www.q1010.com/184/3216-0.html

注:关于分析Vue2中组件间通信的解决全方案的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:vue.js

您可能感兴趣的文章

  • VueJs单页应用实现微信网页授权及微信分享功能示例
  • 分析win7 cmd执行vue不是内部命令的解决方法
  • Vue实现一个返回顶部backToTop组件
  • vue 怎么创建组件及组件使用方法
  • Vue中如何实现轮播图的示例代码
  • vue中计算属性(computed)、methods和watched之间的区别
  • vue中各组件之间传递数据的方法示例
  • Vue2.0如何发布项目实战
  • 将 vue 生成的 js 上传到七牛的实例
  • vue中七牛插件使用的实例代码
上一篇:Vue.js中的图片引用路径的方式
下一篇:vue中计算属性(computed)、methods和watched之间的区别
热门文章
  • Vue 报错TypeError: this.$set is not a function 的解决方法
  • vue实现动态添加数据滚动条自动滚动到底部的示例代码
  • vue项目设置scrollTop不起作用(总结)
  • vue项目中使用vue-i18n报错的解决方法
  • iview实现select tree树形下拉框的示例代码
  • 分析关于element级联选择器数据回显问题
  • vue项目打包后打开页面空白解决办法
  • 解决element ui select下拉框不回显数据问题的解决
  • element-ui table span-method(行合并)的实现代码
  • element-ui 设置菜单栏展开的方法
  • 最新文章
    • 理解vue ssr原理并自己搭建简单的ssr框架
    • vue favicon设置以及动态修改favicon的方法
    • vue-router启用history模式下的开发及非根目录部署方法
    • 从零开始在NPM上发布一个Vue组件的方法步骤
    • Element input树型下拉框的实现代码
    • Vue 报错TypeError: this.$set is not a function 的解决方法
    • Vue.js组件高级特性实例分析
    • 浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
    • 分析Vue.js自定义tipOnce指令用法实例
    • 浅谈vuex actions和mutation的异曲同工

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。