关于vue中$emit事件不触发问题

<!DOCTYPE html>
<html>
<head>

<meta charset="UTF-8">
<title></title>

</head>
<body>

<div id="app">
    <my-div v-on:addCounter="addAllCounter()"></my-div>
    <my-div @addCounter="addAllCounter()"></my-div>
    <my-div @addCounter="addAllCounter()"></my-div>
    <my-div @addCounter="addAllCounter()"></my-div>
    <my-div @addCounter="addAllCounter()"></my-div>
    <my-div @addCounter="addAllCounter()"></my-div>
    <p>一共点击过多少次 {{allCounter}}</p>
</div>

<script src="https://cdn.jsdelivr.net/npm/...;></script>
<script>

var Btn = Vue.extend({
    template:`
        <button @click="addCounter2()">已经点击过了几次:{{counter}}</button>
    `,
    data(){
        return {
            counter: 0
        }
    },
    methods:{
        addCounter2(){
            this.counter += 1;
            this.$emit('addCounter')
        }
    }
})

Vue.component('my-div', Btn);

new Vue({
    el: '#app',
    data:{
        allCounter: 0
    },
    methods:{
        addAllCounter(){
            console.log(111)
            this.allCounter += 1;
        }
    }
})

</script>
</body>
</html>

控制台111都不打印

阅读 6.8k
3 个回答

在HTML模板中,$emit传入的自定义事件名称全部小写。

打开控制台,点击按钮,将警告看一下,你就明白了

新手上路,请多包涵

组件加载成功了吗?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题