vue组件通讯

组件是vue最主要的语法特性之一,组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能。在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例。
只有把各组件的通讯运用的游刃有余,才能说自己已经入门了,不是吗?

方法调用

1、子组件调用父组件的方法

  • 直接用this.$parent.xxxx这样直接调用父组件的方法。
  • 用$emit向父组件触发一个事件,父组件监听这个事件就行了。
//父组件
<child @refreshList="onRefresList"></child>  
onRefresList(data){
    console.log(data);
}

//子组件 
this.$emit('refreshList',data); 

2、父组件调用子组件的方法

  • 用this.$children,但得到是一个数组,包含所有的子组件,可通过属性判断
  • 通过ref调用
//父组件
<coma :das="da" ref="comA"></coma>   //子
this.$refs.comA.say("data");  //调用子的事件,并传值过去
this.$refs.comA.val++;  //改变子的值

//子组件
say(data){
    console.log(data);
    alert("父调用我的");
}

3、兄弟组件调用方法

//mian.js
window.EventBus = new Vue();

//兄弟1(调用者)
EventBus.$emit("setVal", data);

//兄弟2(被调用者)
//mounted()钩子中监听
bus.$on('setVal', (data) => {
    console.log(data);
}

数据传递

1、父组件传子组件

//父组件
<child :inputName="name"></child>  //name是父组件的data里的值
<child inputName="name"></child>  //name是一个字符串

//子组件
props: ["inputName","head"]
传过来的值不能在data里出现,不能修改,拿到后应用变量存着,其他来操作变量

//子组件传过来验证、有默认值
props: {
    'head': Object,
    'pagecount': {
        default: 5,
        type: Number  //String Number Boolean Function Object Array Symbol
    }
}

2、子组件传父组件和兄弟组件传值用调用方法解决

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 25,917评论 1 12
  • 组件(Component)是Vue.js最核心的功能,也是整个架构设计最精彩的地方,当然也是最难掌握的。...
    六个周阅读 5,656评论 0 32
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,082评论 0 29
  • 父子通讯 父组件向子组件通讯(单向数据流传递,子组件不应该改变父组件里面数据的值),父组件代码如下 父组件在调用子...
    Hachiman阅读 276评论 0 1
  • 分享久石譲的单曲《月光の雲海(月光下的云海)》:http://music.163.com/song/442760/...
    牧荣萌阅读 154评论 0 0