Vuejs -基于当前选项卡动态更改数据表的:items

pbwdgjma  于 2023-01-09  发布在  Vue.js
关注(0)|答案(1)|浏览(127)

我开始学习Vue,我被困在我的一个项目中。我正在使用Vuetify。
我想有一些选项卡,并根据用户选择的选项卡在数据表中显示适当的数据。我只需要一个数据表,根据选择的:项目应自动更改。

<template>
    <v-card>
        <v-tabs
                v-model="tab"
                background-color="deep-purple accent-4"
                centered
                dark
                icons-and-text
        >
            <v-tabs-slider></v-tabs-slider>

            <v-tab href="#tab1">
                somethng
            </v-tab>

            <v-tab href="#tab2">
                    something
            </v-tab>
        </v-tabs>    
        <v-tabs-items v-model="tab">
            <v-data-table
                    :headers="headers"
                    :items="tab"
                    :items-per-page="5"
                    class="elevation-1"
            >
            </v-data-table>
        </v-tabs-items>
    </v-card>
</template>

<script>
    export default {
        name: 'Home',
        data() {
            return {
                tab: null,
                headers: [
                    {
                        text: 'Description',
                        align: 'start',
                        sortable: true,
                        value: 'description',
                    },
                    {
                        text: 'Link',
                        align: 'start',
                        sortable: false,
                        value: 'link',
                    }

                ],

                tab1: [
                    {description: "test", link: "test"},
                ],

                tab2: [
                    {description: "test", link: "test"},                        
                ],
                
            }
        },
    }
</script>

所以基本上我需要把tab值从字符串转换成相应的数组,我没有找到类似的东西,无论我尝试什么都失败了。
例如,我曾尝试使用一个观察器,但随后我得到了一个错误,即:items表只读取数组。
我不想有多个数据表,如果可以避免的话就使用v-if。如果不能,我就使用它
有什么建议吗?

dw1jzc5e

dw1jzc5e1#

可以在computed节中放置函数。例如:

computed: {
    items: function () {
        switch (this.tab) {
            case 1:
                return [/*first array*/];
            case 2:
                return [/*second array*/];
            case 3:
                return [/*third array*/];
            default:
                return [];
        }
    }
}

相关问题