vue基础之组件子传父

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>子传父</title>
</head>
<body>
    <div id="app">
        <son @get="getson"></son>
        <global @glo="getglo"></global>
    </div>
</body>
<script src="./vue.js"></script>
<script>
    Vue.component("global",{
        data:function (){
         return {
             mes:"我是全局组件"
         }
        },
        template: "<p @click='post'>全局组价</p>",
        methods:{
            // post:()=>{
            //     this.$emit("glo", this.mes)
            // },
            post: function(){
                console.log(this)
                this.$emit("glo", this.mes)
            }
        }
    })
    let vm=new Vue({
        el:"#app",
        data:{
            mes:""
        },
        components:{
            "son":{
                data:function(){
                    return {
                        mesSon:"I am son"
                    }
                },
                template:"<p @click='send'>局部组件</p>",
                methods: {
                    send:function(){
                        this.$emit("get",this.mesSon)
                    }
                },
            }
        },
        methods: {
            getson:function(data){
                console.log(data);
            },
            getglo:function(data){
                console.log(data);
            }

        },

    })
/*
首先子组件包括全局组件,局部组件。
如何将子组件的数据传递给父组件,这里用到子组件的一个事件属性。$emit
$emit 必须在事件中使用。有两个参数,第一个参数是事件名,第二个参数是子组件的数据,也就是需要传的数据。
然后,父组件怎样才能接收到子组件传过来的数据呢?需要在实例中绑定一个函数,这个函数的参数值就是子组件传过来的数据。
最后将子组件放到挂载点中。(这里要注意一点,在子组件中封装的事件函数为自定义事件,需要在子组件中绑定)


*/
</script>
</html>

猜你喜欢

转载自blog.csdn.net/qq_39045645/article/details/89951480