私はリストを持っていますが、私はそれをループするforループを使用しています。構造は次のようになります。Vue array.spliceリストから間違ったアイテムを削除する
salesLists: {
1: [ [], [], [] ]
2: [ [], [] ]
}
とHTML:
<div v-for="(saleLists, index) in salesLists">
<my-comp v-for="(item, i) in saleLists" :key="i" :index="parseInt(i)+1"></my-comp>
</div>
は今、私はsalesLists[1]
配列から項目を削除しようとしています。私は、任意のキーを指定しなかったとして、しかし、
removeForm(e) {
var index = parseInt(e.target.getAttribute('data-index')) - 1 // = 2
var client = e.target.getAttribute('data-client') // = 1
//Vue.delete(this.salesLists[client], index);
this.salesLists[client].splice(index, 1)
this.$forceUpdate()
}
それはそれを削除し、それだけで空の配列(私は仮定)、それはDOMから右の要素を削除されていないのです。私はそのためのボタンや@click="removeForm"
を持っています。それは2のインデックスを削除しますが、アイテムをループするのはv-for
であり、カウントが減少するので、最後の最後のアイテムだけが削除されます。
この問題を解決する適切な方法は何ですか? :ここでは/
はフィドルです:https://jsfiddle.net/8rvfz40n/は、各入力フィールドに異なる値を書き込むと、中央の1つを取り外してみてください、あなたはそれが最後の1
そして、なぜあなたはそれが間違った項目を削除すると思いますか?私はそれが正常に動作し、正しいものを削除して参照してください。 https://jsfiddle.net/8rvfz40n/1/ – dfsq