props用于父组件向子组件传递数据,还有一种比较常见的是子组件传递数据或事件到父组件中。
我们应该如何处理呢?这个时候,我们需要使用自定义事件来完成。
什么时候需要自定义事件呢?
当子组件需要向父组件传递数据时,就要用到自定义事件了。
我们之前学习的v-on不仅仅可以用于监听DOM事件,也可以用于组件间的自定义事件。
自定义事件的流程:
在子组件中,通过$emit()来触发事件。
在父组件中,通过v-on来监听子组件事件。

 1 <div id="app">
 2     <cnp @itemclick="cnpClick"></cnp>
 3 </div>
 4
 5 <template id="cnp">
 6     <div>
 7         <button v-for="item in catgories" @click="btnclick(item)">
 8             {{item.name}}
 9         </button>
10     </div>
11 </template>
12
13 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
14 <script>
15     const cnp = {
16         template: '#cnp',
17         data () {
18             return {
19                 catgories: [
20                     {id: 'aaa', name: '热门推荐'},
21                     {id: 'bbb', name: '手机数码'},
22                     {id: 'ccc', name: '家用办公'},
23                     {id: 'ddd', name: '居家用品'}
24                 ]
25             }
26         },
27         methods: {
28             btnclick (item) {
29 //                console.log(item)
30                 this.$emit('itemclick', item)
31             }
32         }
33     }
34
35     const app = new Vue ({
36         el: '#app',
37         data: {
38             message: 'aaaaa'
39         },
40         components: {
41             cnp
42         },
43         methods: {
44             cnpClick (item) {
45                 console.log(item)
46             }
47         }
48     })
49 </script>
12-29 18:34