我试图使一个可重用的vuetify数据表。我希望能够通过动态插槽或项目插槽,如果我想和两者都应该工作。这是代码
<v-data-table
:headers="headers"
:items="items"
:dense="dense"
:hide-default-header="hideDefaultHeader"
:loading="loading"
:options.sync="settings"
:items-per-page="itemsPerPage"
:server-items-length="itemLength"
@click:row="handleClick"
:height="height"
>
<-- 1st part-->
<template v-for="field in slots" v-slot:[field.field]="{ item }">
<slot :name="field.field" :item="item"></slot>
</template>
<-- 2nd part -->
<template v-slot:item="{item}">
<slot name="item" v-bind="item"></slot>
</template>
</v-data-table>
这是一个名为DataTable
的组件,然后我像这样使用它
<DataTable
v-if="tabs == n"
:items="items"
:loading="loading"
:headers="headers"
:options="serverOptions"
:slots="slots"
:total="toatl"
@updateOptions="updateOptions($event, n)"
>
我也有一个这样的插槽数组
slots: [{ field: "item.CREATOR" }, { field: "item.BODY" }]
我希望能够使用2nd part
使用item
插槽或使用插槽数组1st part
中定义的特定列插槽。现在是动态插槽,除非我注解掉2nd part
。这是我当前如何插入每个部分的方式
第一部分:
<template v-slot:item.CREATOR="{ item }">
<strong>{{item.FIRSTNAME}} {{item.LASTNAME}}</strong>
</template>
第二部分:
<template v-slot:item="item">
<tr>
<td>{{item.MESSAGESTATUS}}</td>
<td>sdsd</td>
<td>sfsf</td>
</tr>
</template>
2条答案
按热度按时间41zrol4v1#
您正在尝试做的事情可以使用您希望的动态插槽的计算属性轻松解决:
所以现在你可以使用你的第一部分为你的插槽数组中的每个'CREATOR'插槽:
如果您有其他插槽需要以另一种方式进行处理,您只需要为其他插槽使用另一个计算属性并重复该过程...
希望它有帮助,我来到这里与一个类似的问题,我解决了这种方式。
nr9pn0ug2#
它可能会帮助你。
codepen