溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Vue入門七、父子組件間通訊

發(fā)布時間:2020-08-04 19:26:06 來源:網(wǎng)絡 閱讀:293 作者:煢煢木偶 欄目:web開發(fā)
一、父子組件通訊

父傳子:
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')觸發(fā)
2、父組件里通過@自定義事件名='事件名'監(jiān)聽
br/>1、子組件里通過this.$emit('自定義事件名','變量1','變量2')觸發(fā)
2、父組件里通過@自定義事件名='事件名'監(jiān)聽
<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('父組件接收事件名','參數(shù)1','參數(shù)2')
                this.$emit('hellobaba','給你帶個蘋果','給你帶個梨')
            }
        }
    }
    var parent = {
        // 父組件中@子傳入事件名進行監(jiān)聽
        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問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI