Вы можете добавить id
в элемент rows
и использовать его в качестве идентификатора.Но я предполагаю, что вы делаете это, чтобы позже вы могли получить входное значение.Есть лучший способ сделать это.
Определить объект values
в родительском объекте данных.Например:
data: {
rows: [],
values: {},
count:0
},
Каждый раз, когда вы добавляете новую строку, добавляете к ней реактивное свойство:
addRow: function () {
var txtCount=++this.count;
id='txt_'+txtCount;
this.rows.push({ title: "first", description: "textbox1"});
this.$set(this.values, id, '')
},
Определите value
опору для вашего пользовательского компонента и создайте input
событие каждый раз, когда значение меняется.Подготовка вашего пользовательского компонента к приему v-model
Vue.component('button-counter', {
props: ['value'],
template: '<input type="text" @input="$emit(\'input\',
arguments[0].srcElement.value)" style="margin-top: 10px;" ><br>'
})
Привязка каждого пользовательского компонента к правильному v-model
<button-counter v-model='values[row.id]'></button-counter>
Теперь у вас есть доступ ко всем входным значениям в values
в родительском компоненте.
Вот рабочий jsfiddle .
Кстати: вы получаете ошибку, потому что ваш пользовательский компонент имеет несколько корней.Вам нужно либо удалить br
, либо добавить элемент обтекания.