You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Vuetify.js的v-tabs组件各标签显示独立数据?

问题

我在页面中添加了如下v-tabs组件,当前示例仅绑定了一段文本数据,三个标签均显示该文本内容:

<template>
 <v-tabs fixed centered>
 <v-tabs-bar class="cyan" dark>
 <v-tabs-slider class="yellow"></v-tabs-slider>
 <v-tabs-item v-for="i in items" :key="i" :href="'#tab-' + i" >
 {{ i }}
 </v-tabs-item>
 </v-tabs-bar>
 <v-tabs-items>
 <v-tabs-content v-for="i in items" :key="i" :id="'#tab-' + i" >
 <v-card flat>
 <v-card-text>{{ text }}</v-card-text>
 </v-card>
 </v-tabs-content>
 </v-tabs-items>
 </v-tabs>
</template>
<script>
export default {
 data () {
 return {
 items: ['Item One', 'Item Seventeen', 'Item Five'],
 text: 'Lorem ipsum dolor sit amet, consectetur'
 }
 }
}
</script>

请问如何实现每个标签显示单独的数据块?


解决方案

很简单,你只需要调整数据结构,让每个标签和它对应的内容一一绑定就行,具体步骤如下:

1. 修改数据结构

把原来分开的items和text合并成一个对象数组,每个对象包含标签标题和对应的专属内容:

export default {
  data () {
    return {
      tabs: [
        { title: 'Item One', content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' },
        { title: 'Item Seventeen', content: 'Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.' },
        { title: 'Item Five', content: 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.' }
      ]
    }
  }
}

2. 更新模板绑定

在模板里循环这个新的tabs数组,分别渲染标签标题和对应内容:

<template>
 <v-tabs fixed centered>
 <v-tabs-bar class="cyan" dark>
 <v-tabs-slider class="yellow"></v-tabs-slider>
 <!-- 循环渲染标签项,绑定每个tab的标题 -->
 <v-tabs-item 
   v-for="(tab, index) in tabs" 
   :key="index" 
   :href="'#tab-' + index"
 >
 {{ tab.title }}
 </v-tabs-item>
 </v-tabs-bar>
 <v-tabs-items>
 <!-- 循环渲染标签内容,绑定每个tab的专属内容 -->
 <v-tabs-content 
   v-for="(tab, index) in tabs" 
   :key="index" 
   :id="'#tab-' + index"
 >
 <v-card flat>
 <v-card-text>{{ tab.content }}</v-card-text>
 </v-card>
 </v-tabs-content>
 </v-tabs-items>
 </v-tabs>
</template>

小优化(可选)

如果担心用index作为key不够稳妥(比如后续会调整标签顺序),可以给每个tab对象加一个唯一ID字段:

tabs: [
  { id: 'tab-one', title: 'Item One', content: '第一个标签的专属内容' },
  { id: 'tab-seventeen', title: 'Item Seventeen', content: '第二个标签的专属内容' },
  { id: 'tab-five', title: 'Item Five', content: '第三个标签的专属内容' }
]

然后模板里的key、href和id都换成这个唯一ID:

<v-tabs-item 
  v-for="tab in tabs" 
  :key="tab.id" 
  :href="'#' + tab.id"
>
{{ tab.title }}
</v-tabs-item>

<!-- 内容部分同理 -->
<v-tabs-content 
  v-for="tab in tabs" 
  :key="tab.id" 
  :id="tab.id"
>
<v-card flat>
<v-card-text>{{ tab.content }}</v-card-text>
</v-card>
</v-tabs-content>

这样每个标签就会显示自己独有的数据块啦!

内容的提问来源于stack exchange,提问作者Un1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:48:30