Кто-нибудь знает, как передавать динамические c слоты от родителей к внукам?
Я знаю, как это сделать с именованными слотами stati c, но не с динамическими c именованные слоты.
Например, предположим, что шаблон слота - это 'name' в родительском элементе, а у внука есть слот, основанный на столбцах Dynami c.
Как добавить шаблон в дочернем элементе, чтобы передать это.
Вот пример моего кода:
// GrandChild.vue
<template>
<table>
<tbody>
<template v-for="(item, itemIndex) in items">
<tr :key="itemIndex">
<template v-for="(col, colIndex) in columns">
<slot
v-if="$scopedSlots[col]"
:name="col"
:item="item"
/>
<td
v-else
:key="colIndex"
>
{{ String(item[col]) }}
</td>
</template>
</tr>
</template>
</body>
</table>
</template>
<script>
export default {
props: ['items', 'columns']
}
</script>
// Child.vue
<template>
<grand-child :items="items" :columns="columns">
<!-- not sure what goes here -->
</grand-child>
</template>
<script>
export default {
props: ['items', 'columns']
}
</script>
// Parent.vue
<template>
<child :items="items" :columns="columns">
<template #name="{item}">
<td>Name is {{ item.name }}</td>
</teamplate>
</child>
</template>
<script>
export default {
data () {
return {
items: [
{id: 1, name: 'Item 1'},
{id: 2, name: 'Item 2'},
{id: 3, name: 'Item 3'},
{id: 4, name: 'Item 4'}
],
columns: ['id', 'name']
}
}
}
</script>
Любая помощь приветствуется.