在Vue中,我們可以通過父子組件之間的通信來獲取父組件中的數(shù)據(jù)。父組件通過props向子組件傳遞數(shù)據(jù),子組件通過觸發(fā)事件來通知父組件進(jìn)行操作。
Vue.component('child-component', { props: ['message'], template: '子組件點(diǎn)擊我向父組件發(fā)送消息: {{ message }}', methods: { sendMessage() { this.$emit('send-message', '這是來自子組件的消息'); } } }); new Vue({ el: '#app', data: { messageFromChild: '' }, methods: { receiveMessage(message) { this.messageFromChild = message; } } });
在上面的代碼中,我們?cè)诟附M件中定義了一個(gè)名為 "child-component" 的子組件,并向其傳遞了一個(gè)叫做 "message" 的 prop。
在子組件中,我們通過 "sendMessage" 方法來觸發(fā)一個(gè)名為 "send-message" 的自定義事件,隨著消息一并被傳遞給父組件。
在父組件中,我們定義了一個(gè)名為 "receiveMessage" 的方法來接收子組件傳來的消息,并將其存儲(chǔ)到父組件中的 "messageFromChild" 變量中。
我們可以使用 v-on 指令來監(jiān)聽自定義事件,當(dāng)監(jiān)聽到事件之后,會(huì)執(zhí)行相對(duì)應(yīng)的方法。
來自子組件的消息:{{ messageFromChild }}
在父組件中,我們使用 "v-on" 指令來監(jiān)聽 "send-message" 事件,并將其綁定到 "receiveMessage" 方法上。
同時(shí),我們也向子組件傳遞了一個(gè)叫做 "msg" 的數(shù)據(jù),并將其作為子組件的 "message" prop 屬性。這個(gè)數(shù)據(jù)可以在子組件中被使用。
通過這種方式,父子組件可以進(jìn)行相互通信,從而實(shí)現(xiàn)了數(shù)據(jù)共享和交互。