【问题标题】:How to style grouped rows in Vuetify datatable using slots?如何使用插槽为 Vuetify 数据表中的分组行设置样式?
【发布时间】:2020-02-15 02:30:16
【问题描述】:

是否有人在最新的 Vuetify 版本中使用 v-slot 实现了分组行?他们的示例如下所示:

<template>
  <v-data-table
    :headers="headers"
    :items="desserts"
    item-key="name"
    group-by="category"
    class="elevation-1"
    show-group-by
  ></v-data-table>
</template>

<script>
  export default {
    data () {
      return {
        headers: [
          {
            text: 'Dessert (100g serving)',
            align: 'left',
            value: 'name',
          },
          { text: 'Category', value: 'category' },
        ],
        desserts: [
          {
            name: 'Frozen Yogurt',
            category: 'Ice cream',
          },
          {
            name: 'Ice cream sandwich',
            category: 'Ice cream',
          },
          {
            name: 'Eclair',
            category: 'Cookie',
          },
          {
            name: 'Cupcake',
            category: 'Pastry',
          },
          {
            name: 'Gingerbread',
            category: 'Cookie',
          },
          {
            name: 'Jelly bean',
            category: 'Candy',
          },
          {
            name: 'Lollipop',
            category: 'Candy',
          },
          {
            name: 'Honeycomb',
            category: 'Toffee',
          },
          {
            name: 'Donut',
            category: 'Pastry',
          },
          {
            name: 'KitKat',
            category: 'Candy',
          },
        ],
      }
    },
  }
</script>

这可行,但我想推出自己的风格。我尝试过这样的事情:

<template v-slot:group="data">
   {{data}}
</template>

我看到了对象,但缺少样式。据我所知,文档中缺少它。

如果有人已经实现了类似的东西,我们将不胜感激。

【问题讨论】:

    标签: javascript vue.js vuejs2 vuetify.js


    【解决方案1】:

    是的,您可以通过从项目道具或硬编码动态添加类来在组中拥有自己的风格

    使用 Vuetify 2.x 更新了 codepen:https://codepen.io/chansv/pen/wvvzXRj?editors=1010

    <div id="app">
      <v-app id="inspire">
        <v-data-table
          :headers="headers"
          :items="desserts"
          item-key="name"
          group-by="category"
          class="elevation-1"
          show-group-by
        >
          <template v-slot:group="props">
       <span class="font-weight-bold">
                     {{props.group }}
                  </span>
            <v-data-table
          :headers="props.headers"
          :items="props.items"
          item-key="name"
          hide-default-footer
        >
              <template v-slot:body="{ items }">
                <tbody>
                  <tr v-for="item in items" :key="item.name" class="success">
                  <td>{{ item.name }}</td>
                </tr>
                </tbody>
              </template>
            </v-data-table>
    </template>
       </v-data-table>
      </v-app>
    </div>
    
    new Vue({
      el: '#app',
      vuetify: new Vuetify(),
      data () {
        return {
          headers: [
            {
              text: 'Dessert (100g serving)',
              align: 'left',
              value: 'name',
            },
            { text: 'Category', value: 'category' },
          ],
          desserts: [
            {
              name: 'Frozen Yogurt',
              category: 'Ice cream',
            },
            {
              name: 'Ice cream sandwich',
              category: 'Ice cream',
            },
            {
              name: 'Eclair',
              category: 'Cookie',
            },
            {
              name: 'Cupcake',
              category: 'Pastry',
            },
            {
              name: 'Gingerbread',
              category: 'Cookie',
            },
            {
              name: 'Jelly bean',
              category: 'Candy',
            },
            {
              name: 'Lollipop',
              category: 'Candy',
            },
            {
              name: 'Honeycomb',
              category: 'Toffee',
            },
            {
              name: 'Donut',
              category: 'Pastry',
            },
            {
              name: 'KitKat',
              category: 'Candy',
            },
          ],
        }
      },
    })
    

    【讨论】:

    • 这不使用最新版本吧?我使用的是 2.x 版
    • 我正在尝试与版本 2.x 相同
    • 我相信v2使用v-slot
    • 是的,vue 2 使用 v-slot 指令vuejs.org/v2/guide/components-slots.html
    • 在模板 v-slot:body 和 v-slot:group 中,您已经准备好分组对象,您可以编写自己的手风琴 html 来使其工作
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 2023-02-15
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2020-10-14
    • 2022-01-16
    相关资源
    最近更新 更多