У меня есть список текстовых полей ввода, созданных с помощью v-for с v-model
для массива.Я хочу добавить элементы в массив и, таким образом, создать еще одно поле ввода.
Пока все работает.Проблема в том, что новым полям ввода каким-то образом присваивается один и тот же индекс (?) Или происходит что-то еще, что приводит к тому, что они отображают одно и то же значение.
Я сделал этот jsfiddle , чтобы продемонстрировать, что я имею в виду. Если дважды нажать кнопку, а затем попытаться отредактировать одно из новых полей ввода, то все новые поля ввода получат отредактированное значение.Я бы хотел, чтобы только отредактированное поле ввода показывало входное значение.
Полагаю, что-то здесь я пропускаю.Кто-нибудь может помочь с этим, пожалуйста?
Javascript:
new Vue({
el: '#app',
data: {
items: [{name: "one", id: 0}],
template: {
name: "two",
id: 2,
},
},
methods: {
addRow: function(){
this.items.push(this.template);
this.items[this.items.length - 1].id = Math.random();
}
}
})
HTML:
<script src="https://unpkg.com/vue"></script>
<div id="app">
<div v-for="(item,index) in items" :key="item.id">
<input v-model="item.name">
</div>
<button v-on:click="addRow">
Add row
</button>
<div>Array content: {{items}}</div>
</div>
Использование: скриншот того, что я получаю