Динамическое добавление/удаление
Пробую реализовать добавление/удаление столбцов, а так же изменение значений свойств id и name в массиве.
Но происходит некорректное удаление, удаляется последний элемент, что видно на скриншоте
Удалял второй объект /
Удалился четвертый объект
Разметка:
<div style="width:200px" v-for="analog in analogs" :key="analog.id">
<label style="font-size:12px"> {{ analog.name }} </label>
<a @click="deleteRow(analog.id)" style="color:red"><b>X</b></a>
<input type="text" class="form-control" style="font-size:12px; width:150px" />
</div>
Код реализации добавления/удаления и изменения свойств id и name после удаления выбранного элемента:
<script>
export default {
name: 'objectcalculationprice-component',
data() {
return {
index: 1,
analogs: []
}
},
methods: {
addRow()
{
this.analogs.push({
id: this.index - 1,
name: 'Аналог № ' + this.index,
});
this.index++;
},
deleteRow(item) {
this.analogs.splice(item, 1);
this.index--;
this.analogs.map((a, i) => {
if (i != a.id) {
console.log("Строка изменяемого объекта", i)
console.log("ID изменяемого объекта", a.id)
a.id = i;
a.name = "Аналог № " + (i + 1);
}
});
}
}
}
</script>
В консоли удаляется объект с верным id. Возможно что-то упускаю...
Решение найдено.
Ответы (0 шт):
Пробую реализовать добавление/удаление столбцов, а так же изменение значений свойств id и name в массиве. Но происходит некорректное удаление, удаляется последний элемент, что видно на скриншоте
Удалял второй объект / Удалился четвертый объект
Разметка:
<div style="width:200px" v-for="analog in analogs" :key="analog.id">
<label style="font-size:12px"> {{ analog.name }} </label>
<a @click="deleteRow(analog.id)" style="color:red"><b>X</b></a>
<input type="text" class="form-control" style="font-size:12px; width:150px" />
</div>
Код реализации добавления/удаления и изменения свойств id и name после удаления выбранного элемента:
<script>
export default {
name: 'objectcalculationprice-component',
data() {
return {
index: 1,
analogs: []
}
},
methods: {
addRow()
{
this.analogs.push({
id: this.index - 1,
name: 'Аналог № ' + this.index,
});
this.index++;
},
deleteRow(item) {
this.analogs.splice(item, 1);
this.index--;
this.analogs.map((a, i) => {
if (i != a.id) {
console.log("Строка изменяемого объекта", i)
console.log("ID изменяемого объекта", a.id)
a.id = i;
a.name = "Аналог № " + (i + 1);
}
});
}
}
}
</script>
В консоли удаляется объект с верным id. Возможно что-то упускаю...
Решение найдено.