Я создал глобальные компоненты, расширяющие компонент Bootstrap Vue Table для создания собственного шаблона для каждой таблицы с именем VTable
.
Компонент Bootstrap Vue Table имеет возможность использовать именованные слоты для настройки рендеринга данных.
<template>
<div>
<b-table
:items="items"
:fields="fields"
...
>
</b-table>
</div>
</template>
<script>
import Table from 'bootstrap-vue/es/components/table/table';
export default {
name: 'Vtable',
extends: Table,
...
};
</script>
Я использую компонент глобальной таблицы внутри другого, используя новый пользовательский тег HTML.
<v-table
v-if="items"
:items="items"
:fields="fields"
...
>
<template
slot="timestamp"
slot-scope="data"
>
...
</template>
<template
slot="row-details"
slot-scope="row"
>
...
</template>
</v-table>
Проблема в том, что именованные слоты, используемые в компоненте VTable
, не отображаются внутри дочернего компонента.
Я также пытался создать произвольно именованный слот внутри глобального компонента
<template>
<div>
<b-table
...
>
<slot name="customRendering"/>
</b-table>
</div>
</template>
И используйте это как
<v-table
...
>
<template slot="customRendering">
<template
slot="timestamp"
slot-scope="data"
>
...
</template>
<template
slot="row-details"
slot-scope="row"
>
...
</template>
</template>
</v-table>
Без успеха
Можно просто использовать именованные слоты, определенные внутри компонента grand-child, или это вообще невозможно?
Я также думаю, что нужно перебрать значение customRendering
для динамического воссоздания слотов таблицы Bootstrap Vue.