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

Vue.js项目中v-for循环使用及输入框值绑定与保留问题

问题1:v-for循环内4个输入框,为每个输入框赋予循环中的id值

直接通过Vue的属性绑定语法:id,结合循环项的id和输入框的标识(避免同一项内的输入框id重复)来设置即可。

示例代码:

<template>
  <div v-for="item in items" :key="item.id">
    <!-- 四个输入框,id结合循环项id和字段名,保证全局唯一 -->
    <input :id="`${item.id}-field1`" v-model="item.field1" placeholder="字段1">
    <input :id="`${item.id}-field2`" v-model="item.field2" placeholder="字段2">
    <input :id="`${item.id}-field3`" v-model="item.field3" placeholder="字段3">
    <input :id="`${item.id}-field4`" v-model="item.field4" placeholder="字段4">
  </div>
</template>

<script setup>
import { ref } from 'vue'
// 示例数据,每个项包含唯一id和四个字段
const items = ref([
  { id: 1, field1: '', field2: '', field3: '', field4: '' },
  { id: 2, field1: '', field2: '', field3: '', field4: '' }
])
</script>

如果不需要区分同一项内的不同输入框(不推荐,因为id需全局唯一),也可以直接绑定:id="item.id",但更建议加上字段标识避免冲突。

问题2:v-for循环内单个输入框,用v-model为每个循环项单独保留输入值

有两种常用实现方式:

方式1:给循环项添加专属字段

直接在每个循环对象里新增一个存储输入值的字段,v-model绑定到这个字段即可:

<template>
  <div v-for="item in items" :key="item.id">
    <input v-model="item.inputValue" placeholder="输入内容">
    <p>当前项输入值:{{ item.inputValue }}</p>
  </div>
</template>

<script setup>
import { ref } from 'vue'
// 每个项自带inputValue字段存储输入值
const items = ref([
  { id: 1, name: '项1', inputValue: '' },
  { id: 2, name: '项2', inputValue: '' }
])
</script>

方式2:用独立对象存储输入值

如果不想修改原数组的结构,可以声明一个单独的响应式对象,以循环项的id为键来存储对应输入值:

<template>
  <div v-for="item in items" :key="item.id">
    <input v-model="inputValues[item.id]" placeholder="输入内容">
    <p>当前项输入值:{{ inputValues[item.id] || '' }}</p>
  </div>
</template>

<script setup>
import { ref } from 'vue'
const items = ref([
  { id: 1, name: '项1' },
  { id: 2, name: '项2' }
])
// 用对象存储每个id对应的输入值
const inputValues = ref({})
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:55:23