javascript - 将 for 循环中每个项目的值设置为 true 或 false

标签 javascript vue.js vuejs3 v-for

我正在尝试创建一个 v-for 来显示包含多组练习的列表。我在每个练习下面为每组创建了一个循环,其中包含一行。

我的数据如下所示。

const exercises = [ 
{ id: 1, name: exercise1, sets: 3 },
{ id:2, name: exercise2, sets: 2 } 
{ id:3, name: exercise3, sets: 4 } 
]

我的组件看起来像这样:

 <template v-for="exercise in exercises" :key="exercise.id">
   <span> {{ exercise.name }} </span>
    <template v-for="set in exercise.sets" :key="set">
      <span @click="completeSet()"> {{ set }} </span>
    </template>
  </template>

现在,我希望能够通过单击事件将每组上的值设置为 true 或 false,将每组标记为已完成。但我不确定如何执行此操作,因为每个集合都没有用于设置值的属性,因为它循环遍历一个数字。

解决这个问题的正确方法是什么?

最佳答案

首先,您不能循环遍历数字。为了能够循环这些集合,您必须

<template v-for="let set = 0; set < exercise.sets; set++" :key="set">
    <span @click="completeSet()"> {{ set }} </span>
</template>

但是,为数字设置属性同样是不可能的。您必须准备好数据才能进行调整:

const exercises = [ 
{ id: 1, name: 'exercise1', sets: 3 },
{ id: 2, name: 'exercise2', sets: 2 } ,
{ id: 3, name: 'exercise3', sets: 4 } 
].map(exercise => ({
    id: exercise.id,
    name: exercise.name,
    sets: Array.from(
        { length: exercise.sets },
        () => ({ completed: false })
    ),
}))

关于javascript - 将 for 循环中每个项目的值设置为 true 或 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73525303/

相关文章:

javascript - 出现此错误 : Cannot read property 'length' of undefined

javascript - Vuex Store 访问状态为 'this'

javascript - 如何使用 watchEffect() 防止中止的异步请求破坏状态

javascript - Vue 3 组合 api 计算属性 = 模板未更新

javascript - 单击从 div 添加或删除类

javascript - 通过 Javascript 更新地址栏

javascript - Vue JS - 基于变量设置 Axios 操作

javascript - 如何定位和修改 Ionic/Angular 应用程序中 CSS 元素的所有实例?

javascript - 在 17 以上的 Android Manifest 中以 SDK 为目标时,Proguard 困惑 Javascript 接口(interface)功能

vue.js - 观察 Vue 3 全局变量的变化