【发布时间】:2026-01-27 01:20:02
【问题描述】:
我有一个带有面板的应用程序,您可以在其中拖动面板,这些面板都是从基本名称数组生成的,如下所示:
<template>
<div id="wrapper">
<nametag
v-for="(name, i) in guests"
:key="i"
:name="name" />
</div>
</template>
<script>
import Nametag from "@/components/Nametag.vue";
module.exports = {
name: 'seating',
components: { Nametag },
data () {
return {
guests: ['Vanessa', 'Lillie', 'Olivia']
}
}
};
</script>
Nametag 是一个包含用于在屏幕上拖动它的所有代码的组件。它所在的 x 和 y 是其数据对象的一部分。
我正在尝试创建一种从来宾列表中删除名称的方法,但我不能只从数组中拼接它,因为当我这样做时,Vue 知道现在数组的长度不同,而且其中一些价值观不同。它只是最终删除了 DOM 中的最后一个组件,并且如果需要,将新名称重新分配给保留其 x 和 y 位置的剩余现有组件。我试图删除的组件并没有被删除,它只是获得了一个新名称,因为来宾数组已经改变。
基本上,我不知道如何让 Vue 删除我希望它删除的组件。
【问题讨论】:
-
尝试使用
:key="name"代替索引 -
拼接数组中的值并为键使用有意义的值,在本例中为名称。
-
但名称不一定是唯一的。如果有两个同名的人,这不会中断吗? -- 编辑:试过了,它确实会因重复名称而中断。
标签: javascript html vue.js vuejs2 vue-component