vue父子组件通过props和emit实现通信

2019-10-15  本文已影响0人  手指乐

emit

<template>
    <div @click="onChildAction">i am test component</div>
</template>

<script>
export default {
    methods:{
        onChildAction(){
             this.$emit('parentAction')
        }
    }
     
}
</script>
<template>
    <div id = "mutil">
        <TestComponent v-on:parentAction="onParentAction"></TestComponent>
    </div>
    
</template>

<script>
import TestComponent from './commoncomponent/TestComponent'
export default {
    components:{TestComponent},
    methods: {
        onParentAction(){
            alert("onParentAction")
        }
    }
}
</script>
onChildAction(){
             this.$emit('parentAction',{"showA":"A","showB":"B"})
        }
methods: {
        onParentAction(e){
            alert(e.showA)
        }
    }

props

<template>
    <div @click="onChildAction">{{msgFromParent}}</div>
</template>

<script>
export default {
    props:{
      msgFromParent:{
         type:String
      }
    },
    methods:{
        onChildAction(){
             this.$emit('parentAction',{"showA":"A","showB":"B"})
        }
    }
     
}
</script>
<template>
    <div id = "mutil">
        <TestComponent v-on:parentAction="onParentAction" :msgFromParent="msg"></TestComponent>
    </div>
    
</template>

<script>
import TestComponent from './commoncomponent/TestComponent'
export default {
    data(){
        return {
             msg:"parent1"
        }
       
    },
    components:{TestComponent},
    methods: {
        onParentAction(e){
            this.msg = "parent2"
        }
    }
}
</script>
上一篇 下一篇

猜你喜欢

热点阅读