Вероятно, это проблема реактивности. Вы должны прочитать об этом здесь . Кроме того, если вы используете v-model, вам не нужно устанавливать значение самостоятельно, то есть вы можете отказаться от вызова @change
. На мой взгляд, у вас есть два варианта.
a. Используйте объекты данных root в вашем компоненте вместо массива / объекта, а затем используйте v-модель как обычно. Это выглядит так:
<template>
<v-text-field v-model="name" />
<v-text-field v-model="email" />
</template>
<script>
export default {
data() {
return {
name: '',
email: '',
etc: ''
}
}
}
</script>
Теперь, когда поля вашей формы обновляются пользователем, вам не нужно использовать @change для установки значения. Это произойдет автоматически.
b. Или установите модель с помощью Vue .set () . В этом случае вы не собираетесь использовать v-модель. Вместо этого вы определили свои собственные методы управления данными. Это выглядит так:
<template>
<v-text-field @change="comp_change(key)" />
</template>
<script>
import Vue from 'vue';
export default {
data() {
return {
editedItem: {}
}
},
methods: {
comp_change (par1) {
Vue.set( this.editedItem, 'name', 'example text' );
}
}
}
</script>