vuejs - как я могу удалить элемент массива в элементе v-for. элемент?

1

У меня есть базовый v-for, который зацикливается на array:

<template v-for="(item, index) in array">
    {{item.text}}
    <btn @click="delete">Delete me!</btn>
</temaplate>

Я хочу иметь возможность удалить элемент внутри моего цикла. Как мне это сделать? Могу ли я просто использовать splice() или удалить, не имея индекса элемента, который я хочу удалить?

  • 1
    Проверьте это stackoverflow.com/questions/43046332/…
  • 0
    @ZainFarooq спасибо за эту ссылку, похоже очень похоже
Теги:
vue.js

1 ответ

4
Лучший ответ

Использует Array.splice().

app = new Vue({
  el: "#app",
  data: {
    items: [{'text':'a'},{'text':'b'}]
  },
  methods: {
    deleteItem: function (item, index) {
      if(this.items[index] === item) { 
      // The template passes index as the second parameter to avoid indexOf, 
      // it will be better for the performance especially for one large array
      // (because indexOf actually loop the array to do the match)
        this.items.splice(index, 1)
      } else {
        let found = this.items.indexOf(item)
        this.items.splice(found, 1)
      }
    }
  }
})
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<div id="app">
  <template v-for="(item, index) in items">
      {{item.text}}
      <button @click="deleteItem(item, index)">Delete me!</button>
  </template>
</div>
  • 0
    спасибо, это самый чистый и простой способ сделать это!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню