【发布时间】:2020-06-05 22:15:48
【问题描述】:
我正在尝试将 slot 传递到 slot 中,但是需要向下传递 slot 的子组件看不到它。
在子 (TheTable) 中,我有来自 Core UI for Vue (CDataTable) 的表格组件,它需要我想从父级传递的某些插槽:
<CDataTable
class="overflow-auto"
:items="this.items"
:fields="fieldData"
:sorter="{ external: true, resetable: true }"
:sorter-value="this.sorterValue"
:table-filter="{ external: true, lazy: false, placeholder: 'Enter here', label: 'Search:'}"
:responsive="false"
:loading="this.loading"
:hover="true"
:items-per-page-select="true"
:items-per-page="this.perPage"
@pagination-change="paginationChanged"
@update:sorter-value="sorterUpdated"
@update:table-filter-value="filterUpdated"
>
<slot name="requiredTableFields"></slot>
</CDataTable>
在我的父组件中:
<TheTable
v-bind:fields="fields"
v-bind:endpoint-url="endpointUrl"
>
<template slot="requiredTableFields">
<td slot="name" slot-scope="{item}">
<div>{{ item['attributes.email'] }}</div>
<div class="small text-muted">
{{ item['attributes.firstname'] }} {{ item['attributes.lastname'] }}
</div>
</td>
<td slot="registered" slot-scope="{item}">
<template v-if="item['attributes.created_at']">{{ item['attributes.created_at'] }}</template>
<template v-else>Not setup yet</template>
</td>
</template>
</TheTable>
有什么办法让它工作吗? 干杯, 卡斯珀
【问题讨论】:
-
vue 2.6 有一个新的way
template v-slot:requiredTableFields -
遗憾的是没有运气,问题似乎在于桌子没有看到它的插槽......
-
CDataTable 需要为其插槽提供模板。您需要先设置预期的模板。我认为您正在尝试从父组件传递此模板对吗?。
-
是的,我正在尝试从父母那里传递它们。实际上无法在那里设置这些模板,因为它们会有所不同,带有 CDataTable 的组件将用于抽象。
-
我不认为这是可能的,但您可以尝试使用以下库 github.com/LinusBorg/portal-vue