怎么在Vue.js中通过自定义事件实现组件通信

本篇文章给大家分享的是有关怎么在Vue.js中通过自定义事件实现组件通信,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联是一家专业从事网站建设、成都网站建设的网络公司。作为专业网站建设公司,成都创新互联依托的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、成都全网营销及网站设计开发服务!

组件通信

从父组件向子组件通信,通过props传递数据就可以了,但Vue组件通信的场景不止有这一种,归纳起来,组件之间的通信可以用下图来表示:

怎么在Vue.js中通过自定义事件实现组件通信

自定义事件

当子组件需要向父组件传递数据时,就要用到自定义事件。子组件用**$ emit()来触发事件**,父组件用**$ on()**来监听子组件的事件。

父组件也可以直接在子组件的自定义标签上使用v-on来监听子组件触发的事件。




  
  
  
  
  自定义事件


  
    

总数:{{total}}

       
  

怎么在Vue.js中通过自定义事件实现组件通信

子组件有两个按钮,分别实现+1和-1的效果,在改变组件的data “counter”后,通过$emit()在把它传递给父组件,父组件使用v-on:increase和v-on:reduce监听事件。

$emit()方法的第一个参数是自定义事件的名称,后面的参数是要传递的数据,可以不填或者填写多个。

注意:除了用v-on在组件上监听自定义事件外,也可以监听DOM事件,这时候可以用 .native修饰符表示监听的是一个原生事件,监听的是该组件的根元素:

使用v-model

Vue 2.x 可以在自定义组件上使用v-model指令。




  
  
  
  
  使用v-model


  
    

总数:{{total}}

       
  

仍然是点击按钮+1的效果,不过这次组件$emit()的事件是特殊的input,在使用组件的父级,并没有在上使用@input=“handler”,而是使用了v-model板顶的一个数据total。这也可以称作是一个语法糖,因为上面的示例可以间接地用自定义事件来实现:


  

总数:{{total}}

  

v-model还可以用来创建自定义的表单输入组件,进行数据双向绑定:




  
  
  
  
  自定义表单输入组件


  
    

总数:{{total}}

         -1   
  

怎么在Vue.js中通过自定义事件实现组件通信

注意:实现这样一个具有双向绑定的v-model组件要满足下面的两个要求:

以上就是怎么在Vue.js中通过自定义事件实现组件通信,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


文章标题:怎么在Vue.js中通过自定义事件实现组件通信
当前路径:http://scyanting.com/article/jjeipj.html

其他资讯