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

如何在Vue.js的v-for循环中更新多个字段?

解决Vue v-for循环内字段无法实时更新的问题

嘿,我看你已经搞定了用户列表的新增和删除功能,现在卡在循环内的字段更新上了对吧?其实你离解决问题只差一步——你的代码里已经用了v-model,但还没完全利用它的双向绑定能力!

问题根源

你当前的updateForm方法里用了静态值'john doe'和'0000',但实际上<input type="text" v-model="user.name">和<input type="text" v-model="user.phone">已经把输入框和users数组里的对应数据实时双向绑定了。也就是说,用户在输入框里输入内容的时候,this.users[key].name和this.users[key].phone已经自动更新了,根本不需要手动赋值静态值!

解决方案

你只需要修改updateForm方法,直接使用users数组里已经更新后的真实值即可。如果需要做额外操作(比如验证、提交到后端),也可以在这里处理:

修改后的JavaScript代码

new Vue({
  el: "#app",
  data: {
    users: [{ name: 'test', phone: '1234' }, ],
    form: { name: '', phone: '' },
    show_link: true,
    IsOn: false,
  },
  methods: {
    addRow: function() {
      this.IsOn = true 
      this.show_link = false 
    },
    removeSelected(index) {
      this.users.splice(index, 1);
    },
    saveForm() {
      this.users.push({ 
        name: this.form.name, 
        phone: this.form.phone 
      })
      this.form.name = '';
      this.form.phone = '';
      // 保存后恢复添加链接,优化用户体验
      this.IsOn = false;
      this.show_link = true;
    },
    updateForm(key) {
      // 直接获取已经通过v-model更新后的用户数据
      const currentUser = this.users[key];
      console.log('当前更新后的用户信息:', currentUser);
      // 这里可以添加你的额外逻辑,比如提交到后端、弹出提示等
      alert(`已更新用户:${currentUser.name},手机号:${currentUser.phone}`);
    }
  }
})

优化后的HTML代码(修正一个小细节)

注意你新增表单里的第二个input的name属性重复了,我帮你改成了phone,更规范:

<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<div id="app">
  <h2>Todos:</h2>
  <ol>
    <li v-for="(user,key) in users">
      <label>
        <input type="text" v-model="user.name">
        <input type="text" v-model="user.phone">
        <input type="button" value="Update" @click="updateForm(key)">
        <input type="button" value="Delete" @click="removeSelected(key)">
      </label>
    </li>
  </ol>
  <a v-if="show_link" @click="addRow">Add Another</a>
  <div v-if="IsOn">
    <hr />
    <input type="text" name="name" v-model="form.name">
    <input type="text" name="phone" v-model="form.phone"> <!-- 修正重复的name属性 -->
    <input type="button" value="Save" @click="saveForm">
  </div>
</div>

额外优化建议

  • 如果不需要额外的更新逻辑(比如提示、提交后端),其实这个Update按钮都可以去掉,因为v-model已经实时同步了数据。
  • 保存新增用户后隐藏表单、恢复添加链接,能让操作流程更顺畅。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:40:14