Хм, я думаю, что вы смешиваете здесь все виды кода:)
Во-первых, вы не должны использовать jquery внутри VueJS.Я думаю, что ваши настройки немного не в порядке.Вы не должны определять весь объект с функциями и прослушивателями событий в вашем объекте данных vue.
Для этого предназначены компоненты Vue, определяйте методы в свойстве методов, а данные в свойстве данных.
Благодаря вашему примеру с jsfiddle, у меня есть этот чистый пример vuejs для вас на codepen: https://codepen.io/bergur/pen/vwRJVx
Код VueJS:
new Vue({
el: '#demo',
name: 'Adding html',
data() {
return {
inputs: []
}
},
methods: {
addInput() {
this.inputs.push(this.inputs.length+1)
}
},
computed: {
buttonText() {
return this.showInput ? 'Hide input' : 'Show input'
}
}
})
HTML-шаблон
<div id="demo">
<button @click="addInput">Add input</button>
<div v-for="(input, index) in inputs">
<input name="data" v-model="inputs[index]" />
</div>
<p>
First value: {{ inputs[0] }}<br />
Second value: {{ inputs[1] }}
</p>
</div>
Вот пошаговое руководство по коду.
- Мы создаем свойство данных, называемое input, которое является массивом.
- Мы создаем метод с именем addInput, и все, что нужно сделать, это выдвинуть новыйitem в массиве inputs
- В шаблоне мы зациклимся с v-for через наш массив входов и отобразим вход для каждого элемента в нашем свойстве inputs.
- Затем мы используем v-модель дляпривязать каждый вход к соответствующему месту в массиве входов.
Вы можете попробовать изменить значение ввода и увидеть, что шаблон обновляет значение.
Таким образом, input [0] удерживаетсязначение для фиПервый вход, вход [1] содержит значение для второго входа и т. д.