v-model 不能在 v-for 上使用

Gor*_*yyn 15 eslint vuejs3

VueCompilerError:v-model 不能用于 v-for 或 v-slot 作用域变量,因为它们不可写。为什么?

<template>
  <div v-for="service in services" :key="service.id">
    <ServicesItem v-model="service"></ServicesItem >
  </div>
</template>
<script lang="ts">
import ServicesItem from "@js/components/ServicesItem.vue"

export default defineComponent({
  components: { ServicesItem },
  setup() {
    const services = ref([
      {
        id: 1,
        name: "Service 1",
        active: false,
        types_cars: {
          cars: {},
          suv: {},
        },
      },
    ])

    return {
      services,
    }
  },
})
</script>
Run Code Online (Sandbox Code Playgroud)

最佳实践是什么?反应式对象传输

aym*_*g31 30

好吧,现在发生的事情是变量“service”是虚拟的。它并不存在,它只是某个点(迭代)的真实对象“服务”的一部分。

如果您想将该迭代“附加”到您的组件,您需要提供一个真实的对象,在您的情况下,可以这样做:

<div v-for="(service, i) in services" :key="service.id">
    <ServicesItem v-model="services[i]"></ServicesItem >
</div>
Run Code Online (Sandbox Code Playgroud)