如何在自定义组件中使用vuetify 3数据表v槽功能?

jvidinwx  于 2023-03-13  发布在  Vue.js
关注(0)|答案(1)|浏览(198)

我想从我的自定义组件中使用插槽获取v-data-table项和标题。
自定义组件:@/组件/我的数据表.vue

<template>
  <div>
    <v-data-table :headers="headers" :items="items"> </v-data-table>
  </div>
</template>

<script>
export default {
  props: {
    items: {
      type: Array,
      default: () => [],
    },
    headers: {
      type: Array,
      default: () => [],
    },
  },
};
</script>

App.vue

<template>
  <v-app>
    <v-main>
      <my-data-table :headers="headers" :items="items" item-value="name">
        <template v-slot:[`column.name`]="{ column }">
          {{ column }}
        </template>
        <template v-slot:[`item.name`]="{ item }">
          {{ item.props }}
        </template>
      </my-data-table>
    </v-main>
  </v-app>
</template>

<script>
import MyDataTable from "@/components/MyDataTable.vue";

export default {
  components: {
    MyDataTable,
  },
  data() {
    return {
      headers: [
        { title: "Dessert", align: "start", key: "name" },
        { title: "Calories", align: "end", key: "calories" },
        { title: "Fat (g)", align: "end", key: "fat" },
      ],
      items: [
        {
          name: "Frozen Yogurt",
          calories: 159,
          fat: 6.0,
        },
        {
          name: "Jelly bean",
          calories: 375,
          fat: 0.0,
        },
      ],
    };
  },
};
</script>

如果我把它们放在本机组件中,它们就能工作,但如果我把它们放在自己的组件中,它们就不能工作。
预期结果:

活性结果:

我使用vue 3和vuetify 3。
这是codesandbox ready link

bbuxkriu

bbuxkriu1#

尝试通过迭代从v-datatable转发插槽,然后创建可在父组件中访问的新插槽:

<v-data-table :headers="headers" :items="items"> 
   <template v-for="(_, scopedSlotName) in $scopedSlots" v-slot:[scopedSlotName]="slotData">
        <slot :name="scopedSlotName" v-bind="slotData" />
   </template>
</v-data-table>

相关问题