Vue 组件绑定事件无效

在vue中直接在组件上绑定事件是无效的,例如以下代码是无效的:

    <div id="app">
        <btn @click='alert(1)'>点击</btn>
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>

    <script>
        Vue.component('btn', {
     
            template:`
            
            `
        })
        new Vue({
     
            el: '#app', 
            data() {
     
                return {
     

                }
            }
        });
    </script>

如果一定要直接在组件上绑定事件也是可以实现的,下面提供两者方法,可以任选其一:

1、你可能有很多次想要在一个组件的根元素上直接监听一个原生事件。这时,你可以使用 v-on 的 .native 修饰符

<div id="app">
        <btn @click.native='alert(1)'>点击</btn>
</div>

2、从内部传出来

	<div id="app">
        <btn @click='alert(1)'>点击</btn>
    </div>
    <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.11/vue.min.js"></script>

    <script>
        Vue.component('btn', {
     
            template:`
            
            `,
            methods: {
     
                handleClick(e){
     
                    this.$emit('click','e')
                }
            },
        })
        new Vue({
     
            el: '#app', 
            data() {
     
                return {
     

                }
            }
        });
    </script>

你可能感兴趣的:(vue,自定义事件)