javascript - Vuetify Data Table Conditional Column Rendering - Stack Overflow

How do i show or hide my vuetify data table columns depending if one of my values are either true or fa

How do i show or hide my vuetify data table columns depending if one of my values are either true or false?

Let's say i have the following basic data table and data, i want to be able to hide any column that i wish. Like i don't want to see anything related to Carbs or Protein.

<template>
    <v-content>
        <v-data-table
          :headers="headers"
          :items="desserts"
          :items-per-page="5"
          class="elevation-1"
        >
        </v-data-table>
    </v-content>
</template>
<script>
    export default {
    name: 'someTable',
    puted: {
    },
    ponents: {
        //
    },

    data: () => ({
        test: true,
        headers: [
              {
                text: 'Dessert (100g serving)',
                align: 'start',
                sortable: false,
                value: 'name',
              },
              { text: 'Calories', value: 'calories' },
              { text: 'Fat (g)', value: 'fat' },
              { text: 'Carbs (g)', value: 'carbs' },
              { text: 'Protein (g)', value: 'protein' }
            ],
        desserts: [
          {
            name: 'Frozen Yogurt',
            calories: 159,
            fat: 6.0,
            carbs: 24,
            protein: 4.0
          },
          {
            name: 'Ice cream sandwich',
            calories: 237,
            fat: 9.0,
            carbs: 37,
            protein: 4.3
          }

        ]
    })
    };
</script>

How do i show or hide my vuetify data table columns depending if one of my values are either true or false?

Let's say i have the following basic data table and data, i want to be able to hide any column that i wish. Like i don't want to see anything related to Carbs or Protein.

<template>
    <v-content>
        <v-data-table
          :headers="headers"
          :items="desserts"
          :items-per-page="5"
          class="elevation-1"
        >
        </v-data-table>
    </v-content>
</template>
<script>
    export default {
    name: 'someTable',
    puted: {
    },
    ponents: {
        //
    },

    data: () => ({
        test: true,
        headers: [
              {
                text: 'Dessert (100g serving)',
                align: 'start',
                sortable: false,
                value: 'name',
              },
              { text: 'Calories', value: 'calories' },
              { text: 'Fat (g)', value: 'fat' },
              { text: 'Carbs (g)', value: 'carbs' },
              { text: 'Protein (g)', value: 'protein' }
            ],
        desserts: [
          {
            name: 'Frozen Yogurt',
            calories: 159,
            fat: 6.0,
            carbs: 24,
            protein: 4.0
          },
          {
            name: 'Ice cream sandwich',
            calories: 237,
            fat: 9.0,
            carbs: 37,
            protein: 4.3
          }

        ]
    })
    };
</script>
Share asked Mar 19, 2020 at 13:23 Otorrinolaringologista -manOtorrinolaringologista -man 1,1577 gold badges32 silver badges56 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 7

Use a puted property for your headers:

<template>
    <v-content>
        <v-data-table
          :headers="_headers"
          :items="desserts"
          :items-per-page="5"
          class="elevation-1"
        >
        </v-data-table>
    </v-content>
</template>
<script>
    export default {
    name: 'someTable',
    puted: {
    },
    ponents: {
        //
    },
    data: () => ({
        test: true,
        headers: [
              {
                text: 'Dessert (100g serving)',
                align: 'start',
                sortable: false,
                value: 'name',
                show: true 
              },
              { text: 'Calories', value: 'calories', show:true },
              { text: 'Fat (g)', value: 'fat', show:true },
              { text: 'Carbs (g)', value: 'carbs', show:false  },
              { text: 'Protein (g)', value: 'protein', show:false  }
            ],
        desserts: [
          {
            name: 'Frozen Yogurt',
            calories: 159,
            fat: 6.0,
            carbs: 24,
            protein: 4.0
          },
          {
            name: 'Ice cream sandwich',
            calories: 237,
            fat: 9.0,
            carbs: 37,
            protein: 4.3
          }

        ]
    }),
puted : {
   _headers () {
   return this.headers.filter(x=>x.show)
}
}

    };
</script>

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1742264700a4411561.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信