当前位置: 首页 > news >正文

开发避坑指南(30):Vue3 表格动态增加删除行解决方案

需求背景

在Vue3环境中,动态增加或者删除表格的行,该怎么实现?如下图:

在这里插入图片描述

实现分析

不同于传统js,jquery等框架的面向dom编程,vue中是面向数据编程。对变量的增删自动绑定到dom节点的增删上,所以在vue中动态增加或者删除表格行无须编写复杂的dom节点操作,直接对变量进行增删操作即可。

解决办法

定义一个列表变量,循环列表变量展示表格的行即可,通过对列表变量增加元素或者删除元素实现绑定的表格行的增加或删除。直接上代码。

变量:

/**价格列表 */
const goodsPriceList = ref([]);

页面:

<el-row type="flex" justify="center" :gutter="15"><el-col :span="8"><h4 class="text-center">数量</h4></el-col><el-col :span="8"><h4 class="text-center">单价</h4></el-col><el-col :span="8"><h4 class="text-center">操作</h4></el-col>              
</el-row><div v-for="(item, index) in goodsPriceList" :key="index + 100"><el-row type="flex" justify="center" :gutter="15"><el-col :span="8" class="text-center"><el-form-item :prop="'goodsPriceList.' + index + '.count'"><el-input v-model="item.count" placeholder="请输入商品数量" /></el-form-item></el-col><el-col :span="8" class="text-center"><el-form-item :prop="'goodsPriceList.' + index + '.price'"><el-input v-model="item.price" placeholder="请输入单价" /></el-form-item></el-col>     <el-col :span="8" class="text-center"><el-button plain icon="Plus" type="primary" @click="handleAddGoodsPrice" v-if="index == goodsPriceList.length-1">新增</el-button><el-button plain icon="Delete" type="danger" @click="handleRemoveGoodsPrice(index)">删除</el-button></el-col>           </el-row>
</div>           

函数:

/** 新增 */
function handleAddGoodsPrice() {let newGoodsPrice = {count:'',price:''}goodsPriceList.value.push(newGoodsPrice);  
}/** 删除 */
function handleRemoveGoodsPrice(index) {if (index >= 0 && index < goodsPriceList.value.length) {goodsPriceList.value.splice(index, 1)}
}
http://www.dtcms.com/a/343991.html

相关文章:

  • 数据库备份sql文件过大,phpAdmin无法执行Sql
  • 深入理解Spring事务传播行为:原理、应用与实践
  • Vue Teleport 原理解析与React Portal、 Fragment 组件
  • 高德地图自定义marker,点击、悬停显示信息框
  • 智能合约漏洞检测技术综述:守护区块链世界的“自动售货机”
  • syn和quote的简单使用——生成结构体
  • Java基础 8.22
  • 在自动驾驶中ESKF实现GINS时,是否将重力g作为变量考虑进去的目的是什么?
  • 从Transformer到扩散模型:解锁大模型背后的技术魔法
  • 微信小程序,事件总线(Event Bus) 实现
  • Git 提交除某个文件外的其他所有文件
  • linux搭建本地yum源仓库
  • windows安装Elasticsearch,ik分词器,kibana可视化工具
  • Go初级二
  • 集群与负载均衡:HAProxy 与 Nginx 实践
  • 第41周——人脸图像生成
  • Java 性能优化实战(三):并发编程的 4 个优化维度
  • 第3课:Flutter基础组件
  • 上海人工智能实验室开源基于Intern-S1同等技术的轻量化开源多模态推理模型
  • WPF MVVM入门系列教程(TabControl绑定到列表并单独指定每一页内容)
  • 【nl2sql综述】2025最新综述解读
  • RAG学习(五)——查询构建、Text2SQL、查询重构与分发
  • Docker 部署 Microsoft SQL Server 指南
  • 第10课:性能优化
  • 如何将照片从iPhone传输到Mac?
  • 如何将文件从 iPad 转移到 iPhone 16/15
  • Node.js 开发 JavaScript SDK 包的完整指南(AI)
  • Cloudflare + nginx 限制ip访问的几种方式(白嫖cloudflare的ip数据库)
  • 数据分类分级的概念、标准解读及实现路径
  • 新零售“实—虚—合”逻辑下定制开发开源AI智能名片S2B2C商城小程序的机遇与演进