在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue中 emit實現(xiàn)原理是什么

vue中 emit實現(xiàn)原理是什么

看到vue子組件像父組件傳遞數(shù)據(jù)的方式是:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="vue.js"></script>
</head>
<body>
    <!-- 子組件向父組件傳遞數(shù)據(jù) -->
    <div id="box">
        <v-parent></v-parent>
    </div>

    <!-- 父組件模板 -->
    <template id="parent">
        <div>
            <span>{{msgParent}}</span>
            <v-child @child-info="get"></v-child>
        </div>
    </template>

    <!-- 子組件模板 -->
    <template id="child">
        <div>
            <button @click="send">send</button>
            <!-- <p>{{msgChild}}</p> -->
        </div>
    </template>
    <script type="text/javascript">
        var app = new Vue({
            el:'#box',
            components:{
                // 父組件
                'v-parent':{    
                    data() {
                        return {
                            msgParent:'hello'
                        }
                    },
                    template:'#parent',
                    methods:{
                        get(msg){
                            this.msgParent = msg 
                        }
                    },
                    // 子組件
                    components:{
                        'v-child':{            
                            data(){
                                return {
                                    msgChild:'child'
                                }
                            },
                            template:'#child',
                            methods:{
                                send(){
                                    this.$emit('child-info',this.msgChild)
                                }
                            }
                        }
                    }
                }
            }
        })
    </script>
    
</body>
</html>

看起來就是子組件設(shè)置點擊事件,然后傳值 父組件用參數(shù)接收
那這個實現(xiàn)原理是什么 是不是說必須要點擊子組件才能進行數(shù)據(jù)傳遞?

回答
編輯回答
編輯回答
維他命

因為子組件進行傳值其父組件應該有一個觸發(fā)條件
而去知道何時觸發(fā)可以進行監(jiān)聽在這里你可以使用點擊事件也可以是其他的事件
子組件向父組件傳遞值如果需要父組件去進行顯示 那么這個顯示條件或者說值得獲取一定要有觸發(fā)的
而原理呢就是事件監(jiān)聽
也可以說是發(fā)布訂閱模式

2017年5月21日 20:29
編輯回答
短嘆

源碼中可以看到,emit 其實就是從改組件中綁定的事件events 找到對應的事件上所有的方法,然后遍歷執(zhí)行,你應該去看看vue源碼中事件機制就知道了

2017年5月3日 16:13
編輯回答
萌小萌

點擊只是觸發(fā)的時機,你也可以不通過點擊觸發(fā)這個,emit只是一個普通的函數(shù),你想什么時候觸發(fā)都行

2017年10月25日 18:20
編輯回答
初念

理解下 觀察者模式

2018年3月17日 06:34