當(dāng)在vue組件之間傳遞數(shù)據(jù)時(shí),您可以使用$emit來(lái)發(fā)送一個(gè)自定義的事件,然后在父組件上監(jiān)聽(tīng)并接收這個(gè)事件。$emit函數(shù)的第一個(gè)參數(shù)是事件的名稱,第二個(gè)參數(shù)是傳遞給父組件的數(shù)據(jù)。
// 子組件 <template> <button @click="emitEvent">發(fā)送事件</button> </template> <script> export default { methods: { emitEvent() { // 傳遞 'myEvent' 指定的事件名稱, 'hello' 指定的參數(shù). this.$emit('myEvent', 'hello') } } } </script>
然后在父組件上監(jiān)聽(tīng)組件,處理事件并獲取數(shù)據(jù)。
// 父組件 <template> <div> <my-component @myEvent="handleEvent"></my-component> <p>{{receivedData}}</p> </div> </template> <script> import MyComponent from '@/components/MyComponent.vue' export default { components: { MyComponent }, data() { return { receivedData: '' } }, methods: { handleEvent(data) { // 接收由 '子組件' 發(fā)送的 'myEvent' 事件 this.receivedData = data } } } </script>
$emit可以在子組件的任意方法中調(diào)用(例如 button click事件處理程序),并有一個(gè)可選的第二個(gè)參數(shù)來(lái)傳遞數(shù)據(jù)。