vue删除列表元素的问题

发布于 2022-09-13 00:45:15 字数 811 浏览 5 评论 0

场景是点击add按钮新增一行input,现在我给每个input赋上了不同的值a,b,c
image.png
现在遇到这样一个问题,当点击中间的remove按钮删除第二个值是b的行,可结果是第三个值是c的行被删掉了,想要的效果是
image.png
请问怎么解决这个问题呢,目前我的代码是

<template>
  <div id="app">
    <button @click="add">add</button>
    <div v-for="(item,index) in list" :key="index">
      <input type="text">
      <button @click="remove(index)">remove</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list:[]
    };
  },
  methods: {
    add() {
      this.list.push(1)
    },
    remove(index) {
      this.list.splice(index,1)
    }
  }
};
</script>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

长发绾君心 2022-09-20 00:45:15
<template>
  <div id="app">
    <button @click="add">add</button>
    <div v-for="(item, index) in list" :key="index">
      <input type="text" v-model="item.val" />
      <button @click="remove(index)">remove</button>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      list: []
    };
  },
  methods: {
    add() {
      this.list.push({ val: "" });
    },
    remove(index) {
      this.list.splice(index, 1);
    }
  }
};
</script>
假情假意假温柔 2022-09-20 00:45:15

不要用 数组的 index 当 :key。你先理解下 :key 的含义和实现。

你这种情况直接去掉 :key 就行了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文