Vue组件通讯

1.父→子:通过props传递数据

子组件:在子组件内通过props接收父组件数据

props: ['parentMsg']

父组件:在子组件调用标签中传入父组件数据

<world :parentMsg="parentMsg"></world>

  

2.子→父:通过事件发送数据

子组件:通过$emit发送自定义事件fire和子组件数据child

<button @click="$emit('fire',child)">发送子数据</button>  

父组件:其中world为子组件名称,自定义事件fire被触发后调用父组件的childInfo方法,方法中的参数为接收到的child数据

<world v-on:fire="childInfo"></world>

 

3.完整代码

父组件:因为子组件是局部注册的,先通过import导入,再在父组件中components注册

<template>
    <world v-on:fire="childInfo" :parentMsg="parentMsg"></world>
</template>

<script>
import world from './world'
export default {
  name: "HelloWorld",
  data() {
    return {
      parentMsg: "我是父数据"
    };
  },
  methods: {
    childInfo: function(event){
      alert(event)
    }
  },
  components: {
    world
  }
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>  

  

子组件:接收父组件数据后可以进行操作,这里直接用插值表达式显示出来

<template>
<div>
    <button @click="$emit('fire',child)">发送子数据</button>
    <div>{{parentMsg}}(这是父数据)</div>
</div>
    
</template>

<script>
export default {
    name: "world",
    data() {
        return {
            child: "我是子数据"
        }
    },
    props: ['parentMsg']
}
</script>

<style lang="less" scoped>

</style>

  

 

posted on 2019-01-04 15:53  肥嘟嘟啊左卫门  阅读(108)  评论(0编辑  收藏  举报