У меня странная досадная ошибка.У меня есть ul
, который покажет, если массив имеет значения, поэтому я использую v-if
.Когда массив имеет значения, я хочу применить к нему некоторые CSS.Но поскольку между v-if
и реально существующим элементом существует задержка, мой селектор не находит элемент.
<template>
<ul v-if="errors.length" class="error">
<li v-for="error in errors">{{ error }}</li>
</ul>
</template>
<script type="text/javascript">
export default {
data() {
return {
errors: [],
}
}
methods: {
validate() {
if (someErrorCondition) {
this.errors.push('You have an error');
// The next call fails because .error doesn't exist yet
$(this.$el).find('.error').css('border', 'solid 10px red');
// Error above; $(this.$el).find('.error') is not found. Same for $('.error')
// This is because of the v-if
// NOTE: the second time validate is called, this works, presumably because it exists now.
}
}
}
}
</script>