#javascript #vue.js
#javascript #vue.js
Вопрос:
У меня есть компонент vue, который выполняет серию условных выражений, чтобы проверить, есть ли предыдущие данные при редактировании формы. Поскольку форма редактируется, всегда есть предыдущие данные, но если я ввожу что-то в поле ввода и нажимаю кнопку Сохранить, мой недавно введенный ввод не сохраняется, а остаются те же старые данные. Я понимаю, что это происходит потому v-if
, что условие всегда истинно, но я не могу придумать способ изменить условие, если пользователь вводит новые данные для его замены. Исходное задание передается как prop, который содержит старые / исходные данные.
Условие из моего vue:
<div v-if="job.title">
<input :value="job.title" id="title" name="title" type="text" required>
</div>
<div v-else>
<input v-model="newJob.title" id="title" name="title" type="text" required>
</div>
props: {
route: String,
job: Object,
},
data() {
return {
newJob: {
title: ''
},
}
},
Поэтому, когда я набираю новую информацию v-model
, for newJob
не обновляется в инструментах разработки vue. Как мне обновить поле newJob, ЕСЛИ пользователь что-то вводит, в противном случае продолжайте сохранять старое / исходное значение, которое было в форме редактирования при загрузке страницы.
Комментарии:
1. @phil извините за форматирование.
2. Если
job.title
существует, то отображается первый ввод, и вы не используетеv-model
или@input
для обработки изменений, поэтому ничего не изменится, верно?3. @DecadeMoon это правильно. Итак, я хочу, чтобы, если пользователь начинает что-то вводить или заменяет исходное значение, новое значение распознается vue, и это новое значение сохраняется в БД.
Ответ №1:
Вам нужно только
<input v-model="newJob.title" id="title" name="title" type="text" required>
и
props: {
job: Object,
},
data() {
return {
newJob: {
title: this.job.title || "",
},
};
},
Комментарии:
1. это сработало. Это было очевидно после факта. Спасибо!
Ответ №2:
Одним из подходов было бы использование свойства с объектом в качестве значения по умолчанию, а не реквизита и значения данных:
<input :value="job.title" id="title" name="title" type="text" required>
и
job: {
type: Object,
default: function () {
return {
title: '',
}
}
},