Для динамического отображения сообщения об ошибке вам необходимо использовать значения watchers
или computed
. Для этой цели вычисленные значения, вероятно, являются лучшим выбором. Попробуйте это
<form
class="footer-form"
id="footerform-details"
@submit="checkForm"
action="#"
method="post"
>
<div class="form-group" id="footerbtn-tooltip">
<input
type="email"
class="form-control"
placeholder="Your Email Address"
v-model="email"
>
<button type="submit">Submit</button>
</div>
<p v-if="errors.length">
<b>Please enter the following input value</b>
<ul>
<li v-for="error in errors">{{ error }}</li>
</ul>
</p>
</form>
Мы оставляем метод отправки как есть. и добавьте свойство компьютера. Это будет реагировать каждый раз, когда пользователь вводит письмо.
var subscribe = new Vue({
el: '#footerform-details',
data: { email: null },
methods: {
checkForm: function (e) {
e.preventDefault();
if (this.email) { return true; }
this.errors = [];
if (!this.email) {
this.errors.push('Email required.');
}
}
},
computed: {
errors: function() {
if (!this.email) {
return ['Email required.']; // can make it [...this.errors, 'Email required.']
} else {
return []
}
}
},
})
Дайте мне знать, если это работает, возможны дополнительные оптимизации. Если это форма электронной почты подписки, то это всегда будет один ввод, так что вы можете преобразовать ошибку в объект или просто строку, очищающую также ваш оператор htmp v-for
.