vue组件之间传值

子向父组件传值:

1,子组件中需要以某种方式例如点击事件的方法来触发一个自定义事件
2,将需要传的值作为$emit的第二个参数,该值将作为实参传给响应自定义事件的方法
3,在父组件中注册子组件并在子组件标签上绑定对自定义事件的监听
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../vue.min.js"></script>
</head>
<body>
<div id="app">

    <v-child></v-child>
</div>
<template id="bbb">
    <p>
        <input v-model="ipt" />
    <button @click="send()">发送</button>
    {{info}}
    </p>
</template>

<template id="aaa">
    <p>
        {{str}}
        {{info}}
        <v-childl :name='str'  @jieshou="jieshousj"></v-childl>
    </p>
    
</template>

<script>
    var vm = new Vue({
        el:'#app',
        components:{
            'v-child':{
                template:'#aaa',
                data:function(){
                    return {
                        info:"父组件",
                        str:''
                    }
                },
                methods:{
                    
                    jieshousj:function(s){
                        
                            this.str=s
                    }
                },
                components:{
                    'v-childl':{
                        template:'#bbb',
                        data:function(){
                            return {
                                info:'子组件',
                                ipt:''
                            }
                        },
                        methods:{
                            send(){
                                console.log(this.ipt)
                                this.$emit('jieshou',this.ipt)
                            }
                        }
                    }
                }
            }
        }
    })
</script>

</body>
</html>

父组件向子组件传值:

1,子组件在props中创建一个属性,用以接收父组件传过来的值
2,父组件中注册子组件
3,在子组件标签中添加子组件props中创建的属性
4,把需要传给子组件的值赋给该属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../vue.min.js"></script>
</head>
<body>
<div id="app">

    <v-child></v-child>
</div>
<template id="bbb">
    <p>
    {{name}}
    {{info}}
    </p>
</template>

<template id="aaa">
    <p>
        <input v-model="ipt" />
        <button @click="send()">发送</button>
        {{info}}
        
        <v-childl :name='str'></v-childl>
    </p>
    
</template>

<script>
    var vm = new Vue({
        el:'#app',
        components:{
            'v-child':{
                template:'#aaa',
                data:function(){
                    return {
                        info:"父组件",
                        str:'sss',
                        ipt:''
                    }
                },
                methods:{
                    send(){
                        this.str=this.ipt
                    }
                },
                components:{
                    'v-childl':{
                        template:'#bbb',
                        data:function(){
                            return {
                                info:'子组件'
                            }
                        },
                        props:['name']
                    }
                }
            }
        }
    })
</script>

</body>
</html>

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

推荐阅读更多精彩内容