Vue动态渲染Input数据不更新及动态表格列解决方案

作者:模板散步

时间:2026-10-31

浏览:262

本文解决Vue项目中动态渲染Input组件时数据不实时更新的问题,通过添加$forceUpdate()强制刷新解决。同时介绍了在拼团后台项目中,根据后端返回的列表动态渲染表格列(如不同人数团的价格表头)的实现方法,涉及动态生成el-table-column及数据绑定。

文章目录

在Vue项目中动态渲染input组件时,常遇到绑定的参数无法实时更新的问题。

具体场景是,需要根据后端返回的列表数据动态渲染选项,并将用户输入的参数回传给后端。

然而在实际操作中,发现输入框内虽然进行了输入,但界面并未显示内容,且底层数据未能正确更新。

在Vue项目中动态渲染input组件时,常遇到绑定的参数无法实时更新的问题。

针对该问题,可以在input组件上添加一个刷新数据的处理逻辑来解决。

@input="$forceUpdate()"
<div v-if="doubleChild.lenght!=0&&radio === 1">
  <template v-for="( item,index ) in doubleChild" >
        <el-form-item :label="item.text" :key="index">
            <el-input
                @input="$forceUpdate()"
                placeholder="请输入内容"
                v-model="item.inputKey">
            </el-input>
        </el-form-item>
    </template>
</div>

此外,Vue动态渲染表格也是常见需求。

项目场景

在拼团后台管理系统中,需要配置参团SKU,即设定开团人数。不同开团人数对应不同的价格策略。

因此,需要动态渲染表格的列,例如根据开团类型动态生成“2人团价格”和“3人团价格”等表头。

需求描述

当后台管理员选择开团类型后,在设置关联商品的SKU时,系统需动态渲染出该类型对应的价格列。

具体效果如SKU设置界面所示。

在Vue项目中动态渲染input组件时,常遇到绑定的参数无法实时更新的问题。

在Vue项目中动态渲染input组件时,常遇到绑定的参数无法实时更新的问题。

相关代码实现如下。

<el-table
        ref="multipleTable"
        :data="skuTableData"
        tooltip-effect="dark"
        style="width: 100%"
        border
      >
        <el-table-column prop="id" label="SKU编号" width="120" align="center">
        </el-table-column>
        <el-table-column
          prop="sku_attr_text"
          label="规格"
          width="120"
          align="center"
        >
        </el-table-column>
        <el-table-column prop="address" label="价格" align="center">
        </el-table-column>
        <el-table-column prop="stock" label="库存" align="center">
        </el-table-column>

		//动态渲染的表格列
        <el-table-column
          :label="item.val"
          v-for="(item, index) in tableHead"
          :key="index"
        >
          <template scope="scope">
            <el-input
              size="small"
              v-model="scope.row[item.item]"
              placeholder="0"
              type="number"
            ></el-input>
          </template>
        </el-table-column>
      </el-table>
tableHead:[
    { val: "2人团价格", item: "target1" },
    { val: "3人团价格", item: "target2" },
]  

这里涉及一个数组定义。

skuTableData:[
    {target1:1},
    {target2:2}
]

表格的行数据主要确保数据与列头正确对应。

总结

以上为个人经验分享,希望能为大家提供参考,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章