我在使用复选框作为单独的组件时遇到了一些问题.我只有一个简单的子组件,其中包含带有一些数据的卡模板和一个复选框,如产品列表,每个产品卡应该有一个复选框,一旦 Select ,用户应该能够删除它.现在我编写代码的方式取决于我循环遍历它并显示卡片的数组中有多少项,但如果我选中一个复选框,第二个复选框也会被选中,即使我在呈现时为输入提供了一个单独的ID.任何地方都找不到合适的解决方案,所以如果有任何帮助,我将不胜感激!这是子组件:ProductCard.vue

<template>
    <div>
        <input :id="id" type="checkbox" :checked="modelValue" 
        @change="$emit('update:modelValue',$event.target.checked)">

    </div>
</template>

<script setup>
defineProps(['id','modelValue'])
</script>

这是父组件:

<template>
    <ProductCard v-for="item in array" :key="item.id" v-model="newsletter"/>
</template>

<script setup>
import ProductCard from '@/components/ProductCard.vue'
const array = [{},{}];
</script>

提前感谢!

推荐答案

您可以通过向每个ProductCard组件传递唯一的v-modelprops 来实现这一点.

<template>
  <ProductCard v-for="item in array" :key="item.id" :id="item.id" v- 
  model="selectedItems[item.id]"/>
</template>

<script setup>
  import ProductCard from '@/components/ProductCard.vue'
  const array = [{ id: 1 }, { id: 2 }]; // Sample data with unique IDs
  const selectedItems = ref({}); // Object to store selected items
</script>

Javascript相关问答推荐

为什么我达到了时间限制!?LeetCode链接列表循环(已解决,但需要解释!)

从实时数据库(Firebase)上的子类别读取数据

按钮未放置在html dis位置

如何将连续的十六进制字符串拆分为以空间分隔的十六进制块,每个十六进制块包含32个二元组?

将状态向下传递给映射的子元素

D3 Scale在v6中工作,但在v7中不工作

在nextjs服务器端api调用中传递认证凭证

我们如何从一个行动中分派行动

未定义引用错误:未定义&Quot;而不是&Quot;ReferenceError:在初始化&Quot;之前无法访问';a';

如何在Svelte中从一个codec函数中调用error()?

如何在.NET Core中将chtml文件链接到Java脚本文件?

如何在Bootstrap中减少网格系统中单个div的宽度

我想将Sitecore搜索面过滤器从多个转换为单个

如何使用基于promise (非事件emits 器)的方法来传输数据?

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

Cherrio JS返回父div的所有图像SRC

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

自动滚动功能在当前图像左侧显示上一张图像的一部分

在HTML5画布上下文中使用putImageData时,重载解析失败

如何格式化API的响应