组件内部事 ,件如何传递给父级组件

1.子组件定义

<template>
    <view>
        <h1 @click="tap1">{{title}}</h1>
        <div>{{content}}</div>
    </view>
</template>

<script>
    export default {
        props:{
            title : {
                type : String,
                default : ""
            },
            content : {
                type : String,
                default : ""
            }
        },
        data() {
            return {
                
            };
        },
        watch:{
            title : function (newVal, oldVal) {
                console.log(newVal, oldVal);
            }
        },
        methods:{   //标题的@click点击事件,触发此函数
            tap1 : function(){
                console.log("子组件内部方法tap1");
                this.$emit('tap1', this.title)   //$emit('事件的名称',参数),绿底必须和绿底名称一致,橙色的底色不一定要和绿色底一致
                        
            }
        }
    }
</script>

<style>

</style>

2.父组件

<template>
    <view class="">
        <mycomponent :title="title" content="content...." @tap1="tap"></mycomponent>
       //1.监听子组件传来父组件的方法@tap1监听子组件传递过来的函数。tap1必须和this.$emit('tap1', this.title)中的第一个参数名字相同
    </view>
</template>

<script>
import uniNumberBox from "@/components/uni-number-box/uni-number-box.vue"
import mycomponent from "@/components/mycomponent.vue"
export default {
    data() {
        return {
            title : "新闻标题"
        }
    },
    onLoad:function(){
        var _self = this;
        setTimeout(function() {
            _self.title = "hi123"
        }, 3000);
    },
    methods:{
        tap : function (e) {//2.通过e可接受到子组件传递给父组件的参数
            console.log("父组件tap方法")
        }
    },
    components: {
        uniNumberBox,
        mycomponent
    }
}        
</script>
<style lang="less">
@import "../../less.less";
</style>

注意:子组件中的

  this.$emit('tap1', this.title)   //$emit('事件的名称',参数) 事件名称必须和
父组件中的@函数名一致
  <mycomponent :title="title" content="content...." @tap1="tap"></mycomponent>
 

  

posted @ 2021-05-24 11:24  程序杨%  阅读(69)  评论(0编辑  收藏  举报