gpt4 book ai didi

javascript - 循环中的Vue自定义事件

转载 作者:行者123 更新时间:2023-12-04 08:02:03 24 4
gpt4 key购买 nike

使用 v-for 显示组件时,不会触发子组件发出的事件(自定义事件 update)。独立组件按其应有的方式工作。
我不明白如何处理这个问题。
主文件

import Vue from "vue";
import App from "./App.vue";

new Vue({
render: (h) => h(App)
}).$mount("#app");
应用程序
<template>
<div id="app">
<h1>It work</h1>
<Inner v-on:update="this.do" />
<h1>It NOT work</h1>
<Inner v-for="n in [1, 2, 3]" :key="n" v-on:update="this.do" />
</div>
</template>

<script>
import Inner from "./Inner";

export default {
name: "App",
components: { Inner },
methods: {
do() { alert(1); },
},
};
</script>
内部.vue
<template>
<button v-on:click="this.do">CLICK ME</button>
</template>

<script>
export default {
name: "Inner",
methods: {
do() { this.$emit("update"); },
},
};
</script>

最佳答案

doJavaScript 中的关键字, 尝试在不使用 this 的情况下为方法命名另一个名称为了使用组件。这是一个演示:

const Inner = Vue.component('Inner', {
template: '#Inner',
methods: {
clicked() { this.$emit("update"); },
},
});

new Vue({
el:"#app",
components: { Inner },
methods: {
clicked() { alert(1); },
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<template id="Inner">
<button v-on:click="clicked">CLICK ME</button>
</template>

<div id="app">
<h1>It NOT work</h1>
<Inner v-for="n in [1, 2, 3]" :key="n" v-on:update="clicked" />
</div>

关于javascript - 循环中的Vue自定义事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66409855/

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