Vue 子组件传递事件给父组件进行通信

2020-01-11  本文已影响0人  GaoEnron

子组件和父组件进行通信

可以通过子组件响应方法函数然后发送事件函数,然后父组件进行相应的事件监听然后做相应的处理操作

1. 首先创建子组件模板

<template id="cpn">
        <div>
            <button v-for="item in categories" type="button" @click="btnClick(item)">        {{item.name}}</button>
        </div>
</template>

2. 注册子组件

发送事件函数 this.$emit('itemclick', item) 第一个参数发送事件函数,第二参数传递参数

  const cpn = {
                template: '#cpn',
                props: ['cmovies', 'cmessage'],
                data() {
                    return {
                        categories: [
                            {id: 'aaa', name: '热门推荐'},
                            {id: 'bbb', name: '热门推荐1'},
                            {id: 'ccc', name: '热门推荐2'},
                            {id: 'ddd', name: '热门推荐3'},
                            {id: 'eee', name: '热门推荐4'},
                            {id: 'fff', name: '热门推荐5'}
                        ]
                    }
                },
                    
                methods: {
                    btnClick(item) {
                        console.log(item.name)
                        /* 发送一个事件,父组件需要监听这个事件 */
                        this.$emit('itemclick', item)
                    }
                }
            }

3. 创建Vue对象,注册子组件

使用定义的组件监听发送的事件函数,父组件接收到子组件传递的时间

<div id="app">
        <h1>{{message}}</h1>
        <cpn @itemclick="cpnClick"></cpn>
</div>
const app = new Vue({
                el: "#app",
                data: {
                    message: "你好啊",
                    cmovies: ["海王", "海贼王", "海尔兄弟"],
                    cmessage: "wode"
                },
                components: {
                    cpn
                },
                methods: {
                    cpnClick() {
                        console.log("事件传递")
                    }
                }
                
            })
上一篇下一篇

猜你喜欢

热点阅读