quasar2 table 可展开多行,且数据在展开行中

quasar2 table Expending rows-可展开多行,且数据在展开行中

实现可展开多行,且数据在展开行中
在这里插入图片描述
代码:
template:

<template>
  <div class="q-pa-md">
  <q-table
      title="Treats"
      :rows="tableData"
      :columns="columnData"
      row-key="name"
      hide-bottom
    >
      <template v-slot:header="props">
        <q-tr :props="props">
          <q-th auto-width />
          <q-th v-for="col in props.cols" :key="col.name" :props="props">
            {{ col.label }}
          </q-th>
        </q-tr>
      </template>

      <template v-slot:body="props">
        <q-tr :props="props">
          <q-td auto-width>
            <q-btn
              size="sm"
              color="accent"
              round
              dense
              @click="props.expand = !props.expand"
              :icon="props.expand ? 'remove' : 'add'"
            />
          </q-td>
          <q-td colspan="100%">
            <div class="text-left">
              {{ props.row.name }}
            </div>
          </q-td>
        </q-tr>
        <q-tr
          :props="props"
          v-show="props.expand"
          v-for="child in props.row.children"
          :key="child.calories"
        >
          <q-td /><q-td />
          <q-td key="calories" :props="props">
            {{ child.calories }}
          </q-td>
          <q-td key="fat" :props="props">
            {{ child.fat }}
          </q-td>
          <q-td key="carbs" :props="props">
            {{ child.carbs }}
          </q-td>
        </q-tr>
      </template>
    </q-table>
  </div>
</template>

script:(typescript)

<script lang="ts">
import { defineComponent, ref } from 'vue'
export default defineComponent({
setup () {
const columns = [
      {
        name: 'name',
        required: true,
        label: 'Dessert (100g serving)',
        align: 'left',
        field: 'name',
        sortable: true
      },
      {
        name: 'calories',
        align: 'left',
        label: 'Calories',
        field: 'calories',
        sortable: true
      },
      {
        name: 'fat',
        label: 'Fat (g)',
        field: 'fat',
        align: 'left',
        sortable: true
      },
      { name: 'carbs', label: 'Carbs (g)', align: 'left', field: 'carbs' }
    ]

    const rows = [
      {
        name: 'Frozen Yogurt',
        children: [{
            calories: 159,
            fat: 6.0,
            carbs: 24
          },
          {
            calories: 518,
            fat: 26.0,
            carbs: 65
          },
          {
            calories: 452,
            fat: 25.0,
            carbs: 51
          }]
      },
      {
        name: 'Ice cream sandwich',
        children: [{
            calories: 237,
            fat: 9.0,
            carbs: 37
          }]
      },
      {
        name: 'Eclair',
        children: [{
            calories: 262,
            fat: 16.0,
            carbs: 23
          }]
      },
      {
        name: 'Cupcake',
        children: [{
            calories: 305,
            fat: 3.7,
            carbs: 67
          }]
      },
      {
        name: 'Gingerbread',
        children: [{
            calories: 356,
            fat: 16.0,
            carbs: 49
          }]
      }]
    const columnData = ref(columns)
    const tableData = ref(rows)
    return {
      columnData,
      tableData
    }
}
})
</script>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值