温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Vue入门七、父子组件间通讯

发布时间:2020-08-04 19:26:06 来源:网络 阅读:293 作者:茕茕木偶 栏目:web开发
一、父子组件通讯

父传子:
1、父用子的时候通过属性传递
2、子要声明props:['属性名']接收
3、子组件template中直接用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    // 父传子
    var child = {
        template: `
            <div>我是子组件
            {{sendToChild}}
            </div>
        `,
        props: ['sendToChild']
    }
    var parent = {
        template: `
            <div>我是父组件
                <child sendToChild="send"></child>
            </div>
        `,
        components: {
            child
        }
    }
    new Vue({
        el: '#app',
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        components: {
            parent
        }
    })
</script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    // 父传子
    var child = {
        template: `
            <div>我是子组件
            {{sendToChild}}
            </div>
        `,
        props: ['sendToChild']
    }
    var parent = {
        template: `
            <div>我是父组件
                <child v-bind:sendToChild="send"></child>
            </div>
        `,
        components: {
            child
        },
        data() {
            return {
                send:
                    {name: 'zhangsan', age: 12}
            }
        }
    }
    new Vue({
        el: '#app',
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        components: {
            parent
        }
    })
</script>
</body>
</html>

子传父:1、子组件里通过this.$emit('自定义事件名','变量1','变量2')触发
2、父组件里通过@自定义事件名='事件名'监听
br/>1、子组件里通过this.$emit('自定义事件名','变量1','变量2')触发
2、父组件里通过@自定义事件名='事件名'监听
<child @hellobaba="myaccept"></child>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script type="text/javascript" src="vue.js"></script>
<div id="app"></div>
<script type="text/javascript">
    // 子传父
    var child = {
        template: `
            <div>我是子组件
                <button @click="sendToParent">点我送礼物给爸爸</button>
            </div>
        `,
        methods:{
            sendToParent(){
                // 子传父表达式this.$emit('父组件接收事件名','参数1','参数2')
                this.$emit('hellobaba','给你带个苹果','给你带个梨')
            }
        }
    }
    var parent = {
        // 父组件中@子传入事件名进行监听
        template: `
            <div>我是父组件
                <child @hellobaba="myaccept"></child>
                儿子给我:{{param1}},{{param2}}
            </div>
        `,
        components: {
            child
        },
        data(){
            return {
                param1:'',
                param2:''
            }
        },
        methods: {
            myaccept(val1,val2){
                this.param1 = val1
                this.param2 = val2
            }
        }
    }
    new Vue({
        el: '#app',
        template: `
            <div>
                <parent></parent>
            </div>
        `,
        components: {
            parent
        }
    })
</script>
</body>
</html>
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI