您好,我正在尝试从Vuetify
扩展默认的v-data-table组件,以避免代码冗余。我的v-data-table
组件很少。它的工作原理相同,但表头可以不同。我正在使用v-slots
,但是如何从Vuetify
扩展动态广告位?
当我必须向表中的某一列(例如 action )添加自定义html时:
<v-data-table
:headers="questionTableHeaders"
:items="questions.fetchedData"
class="elevation-1"
hide-default-footer
:page.sync="questions.pagination.page"
:items-per-page="questions.pagination.itemsPerPage"
:loading="loadingData"
loading-text="Loading..."
no-data-text="No data.">
<template v-slot:item.action="{ item }">
<v-icon
small
class="mr-2"
title="title"
@click="clickOnTheItem(item)">
fas fa-plus
</v-icon>
</template>
</v-data-table>
但是有时候表没有列 action 。如何在组件dataTable
扩展的默认v-data-table
组件中准备动态插槽,以确保传递给组件的每个标头都有一个可以在父组件中使用的插槽?
如果我有标题:
[
{text: "text1", value: "name"},
{text: "text2", value: "hash"}
]
我可以访问插槽item.name
和item.hash
吗?
<dataTable :url="examApiUrl" :headers="examTableHeaders">
<template v-slot:item.name="{ item }"></template>
<template v-slot:item.hash="{ item }"></template>
</dataTable>
但是正如我之前写的,标头可以不同。如何在dataTable
组件中准备插槽?
答案 0 :(得分:0)
尝试
<v-data-table
:headers="questionTableHeaders"
:items="questions.fetchedData"
class="elevation-1"
hide-default-footer
:page.sync="questions.pagination.page"
:items-per-page="questions.pagination.itemsPerPage"
:loading="loadingData"
loading-text="Loading..."
no-data-text="No data.">
<template v-slot:item.action="{ item }">
<v-icon
small
class="mr-2"
title="title"
@click="clickOnTheItem(item)">
fas fa-plus
</v-icon>
</template>
<template v-for="(slot, name) in $scopedSlots" v-slot:[name]="item">
<slot :name="name" v-bind="item"></slot>
</template>
</v-data-table>