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

如何让v-switch根据desserts数据切换状态与标签?

解决v-switch与数据联动失效问题

你的问题出在单向绑定无法同步用户操作到数据源,导致开关状态和标签无法联动更新。以下是具体修正方案:

核心修改点

  • 将:model-value替换为v-model,实现开关与item.status的双向绑定,用户切换开关时会自动更新原数据的status值
  • 确保desserts数组中的对象是响应式的(Vue3中直接声明的对象默认响应式,Vue2中如果后续动态添加数据需用Vue.set)

修改后的完整代码

Template部分

<v-data-table
  :headers="headers"
  :items="desserts"
  :items-per-page="5"
  item-key="name"
  class="elevation-1"
  :footer-props="{
    showFirstLastPage: true,
    firstIcon: 'mdi-arrow-collapse-left',
    lastIcon: 'mdi-arrow-collapse-right',
    prevIcon: 'mdi-minus',
    nextIcon: 'mdi-plus',
    'items-per-page-text':'products per page',
  }"
>
  <template v-slot:item.status="{ item }">
    <v-switch
      color="success"
      v-model="item.status"
      :label="item.status ? 'Delicious' : 'Nope'"
    ></v-switch>
  </template>
</v-data-table>

Script部分(Vue3示例)

import { ref } from 'vue'

export default {
  setup() {
    const headers = ref([
      { text: 'Order', value: 'order'},
      { text: 'Name', value: 'name'},
      { text: 'Status', value: 'status'},
    ])
    
    const desserts = ref([
      {
        order: '1',
        name: 'Cake',
        status: true
      },
      {
        order: '2',
        name: 'Chocolate',
        status: false
      },
    ])

    return { headers, desserts }
  }
}

Script部分(Vue2示例)

export default {
  data() {
    return {
      headers: [
        { text: 'Order', value: 'order'},
        { text: 'Name', value: 'name'},
        { text: 'Status', value: 'status'},
      ],
      
      desserts: [
        {
          order: '1',
          name: 'Cake',
          status: true
        },
        {
          order: '2',
          name: 'Chocolate',
          status: false
        },
      ],
    }
  }
}

修改后,开关状态会和item.status同步,切换开关时标签会自动根据status值切换显示"Delicious"或"Nope"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:27:22