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

Vue.js中输入框绑定对象格式值的实现问题求助

解决Vue输入框绑定生成包含ID和答案的对象问题

你想要让每个输入框对应的answer[index]输出成包含对应问题ID和输入内容的对象对吧?咱们一步步调整代码来实现:

1. 修正Data中的结构

首先,你的answer应该是数组类型,因为questions是数组,每个问题需要对应一个独立的答案对象。把原来的单个对象改成空数组:

data: function () {
  return {
    questions: [],
    answer: [], // 改为数组,每个元素存储{id: 问题ID, answer: 输入内容}
  }
},

2. 初始化答案数组(推荐操作)

当你获取到questions数据后,建议同步初始化answer数组,给每个问题预先绑定好ID,避免后续出现undefined的问题:

// 示例:在获取问题数据的逻辑后初始化(比如接口回调或mounted钩子)
mounted() {
  // 假设这里是你获取questions的逻辑,比如接口请求返回数据
  this.questions = [/* 你的问题列表数据 */];
  // 根据questions生成对应的answer数组
  this.answer = this.questions.map(question => ({
    id: question.id,
    answer: ''
  }));
}

3. 修改模板的绑定逻辑

模板里不需要使用:value,直接通过v-model绑定到answer[index].answer即可,此时每个answer[index]会自动保留对应的问题ID:

<table>
  <tr v-for="(question_overall, index) in questions" :key="question_overall.id">
    <td>
      {{ question_overall.question }}
      <div>
        <!-- 直接绑定到对应答案对象的answer属性 -->
        <input type="text" v-model="answer[index].answer">
      </div>
      <!-- 现在这里会输出你想要的格式:{id: xxx, answer: "输入内容"} -->
      {{ answer[index] }}
    </td>
  </tr>
</table>

这样调整后,当你在输入框输入内容时,answer[index]就会自动变成你期望的{ "id": 1, "answer": "the value of this answer is from what I type in" }格式啦。另外记得给v-for加上:key属性(用问题ID作为key),这是Vue的性能优化最佳实践哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:16