Поскольку <ValidationObserver>
показывает агрегированный результат всех <ValidationProvider>
в слотах, вы можете просто обернуть один ValidationObserver вокруг таблицы и удалить вложенные, такие как
<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();
}
}
}
Или вы можете просто l oop через каждую ссылку ValidationObserver, как это (работает, только если у вас нет других ссылок в этом компоненте)
<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());
}
}
}