0👍
Since <ValidationObserver>
shows an aggregated result of all <ValidationProvider>
in the slots you could just wrap one ValidationObserver around the table and remove the nested ones like this
<ValidationObserver ref="form">
<b-table :items="items">
<template v-slot:cell(foo)="data">
<ValidationProvider v-slot="{ errors }" rules="required">
<input v-model="data.value" type="text" />
</ValidationProvider>
</template>
<template v-slot:cell(bar)="data">
<ValidationProvider v-slot="{ errors }" rules="required">
<input v-model="data.value" type="text" />
</ValidationProvider>
</template>
</b-table>
</ValidationObserver>
export default {
methods: {
validate() {
this.$refs.form.validate();
}
}
}
Or you could just loop through every ValidationObserver reference like this (only works if you haven’t other refs in this component)
<b-table :items="items">
<template v-slot:cell(foo)="data">
<ValidationObserver ref="form1">
<ValidationProvider v-slot="{ errors }" rules="required">
<input v-model="data.value" type="text" />
</ValidationProvider>
</ValidationObserver>
</template>
<template v-slot:cell(bar)="data">
<ValidationObserver ref="form2">
<ValidationProvider v-slot="{ errors }" rules="required">
<input v-model="data.value" type="text" />
</ValidationProvider>
</ValidationObserver>
</template>
export default {
methods: {
validate() {
Object.keys(this.$refs).forEach(key => this.$refs[key].validate());
}
}
}
- [Vuejs]-Conditional rendering – show div based on user select
- [Vuejs]-Send data through query or from store in Vue
Source:stackexchange.com