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

Vue.js中通过变量存储的表单模型名动态操作输入框赋值

问题描述

我有一个通过v-model实现双向绑定的Vue组件,需要在组件方法中为指定表单项赋值:当前我在触发的方法内,通过变量分别存储了目标表单模型的字段名、待设置的字段值,已知目标表单模型名称存储在变量中,请问该如何访问对应模型,完成输入框、下拉选择框的赋值操作?

原问题代码

<template>
 <a class='btn btn-sm btn-success' @click.prevent="openModule('sort__abc','asc')"><i class="fa fa-home" ></i> </a>
        
  <select v-model="searchform['sort__abc']" class='btn-default' style='zoom:80%;' :name='"sort__abc"'>
    <option value=''>Sort</option>
    <option value='asc'>Asc</option>
    <option value='desc'>Desc</option>
  </select>
</template>
<script>
var cpage = 1;
export default {
  name: 'user-management',
  data() {
    return {
      searchform: new Form()
    }
  },
  methods: {
    openModule(formModel, formData) {
      // 待实现:通过传入的字段名、字段值给表单项赋值
    }
  }
}
</script>
实现方案

直接通过Vue实例的动态属性访问拿到目标表单对象,再通过中括号语法给对应字段赋值即可,Vue的双向绑定机制会自动同步更新输入框、下拉选择框的视图状态,不需要手动操作DOM。

修改openModule方法代码如下:

openModule(formModel, formData) {
  // 取到data中定义的表单实例,如果表单名本身是动态变量,直接替换为this[存表单名的变量]即可
  const targetForm = this.searchform
  // 动态给对应字段赋值,赋值后视图自动更新
  targetForm[formModel] = formData
}

注意事项

  • 示例中点击按钮调用openModule('sort__abc','asc')后,searchform对象的sort__abc字段会被赋值为asc,下拉框会自动选中“Asc”选项
  • 该写法对所有通过v-model绑定的表单控件(输入框、单选框、多选框、下拉选择器等)都生效
  • 如果后续存在多个表单实例,只需要把表单实例名也作为参数传入方法,通过this[传入的表单实例名变量]就能动态拿到对应表单对象,不需要写死searchform

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:42:18