gpt4 book ai didi

javascript - Vue.JS:为什么父元素不会接收事件?父组件必须是自定义组件吗?

转载 作者:行者123 更新时间:2023-12-02 22:14:30 25 4
gpt4 key购买 nike

我对 Vue.js 很菜鸟。我认为事件是有道理的:我假设它们在 DOM 树中向上冒泡,直到被父级捕获。但我一定错过了一些东西。以下代码不起作用,不会生成任何错误或警告,并且在 Vue 开发人员工具中,我看到正在发出事件。我错过了什么?

index.html:

<!doctype html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuex@3.1.2/dist/vuex.js"></script>

</head>
<body>

<div id="app" @button-clicky="gotevent">
<div @button-clicky="gotevent">
<h1>{{ info }} {{ counter }}</h1>
<button-component />
</div>
</div>

<script src="./main.js"></script>
</body>
</html>

main.js:

Vue.component('button-component', {
data: function() {
return {
count: 1
}
},

methods:
{
clicky() {
this.$data.count++;
this.$emit('button-clicky');
}
},

template: `<button @click="clicky">Go {{ count }}</button>`
});

const vue = new Vue({
el: '#app',
data: {
info: "this is title.",
counter: 0
},

methods: {
gotevent() {
this.$data.counter++;
alert('The event was heard!'); }
}
});

我不能在发出该事件的组件之上的任何父级别上监听事件吗?

我在直接父级 <div> 上添加了监听器还有“app”容器,但没有任何反应,也没有抛出任何错误或警告。

最佳答案

我不认为 Vue 事件像 DOM 那样冒泡,你需要在发出组件上捕获它们,所以 <button-component @button-clicky="gotevent" />

关于javascript - Vue.JS:为什么父元素不会接收事件?父组件必须是自定义组件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59433373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com