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

vue2修改表单只提交被修改的数据的字段传给后端接口

效果:

步骤一、

vue2修改表单提交的时候,只将修改的数据的字段传给后端接口,没有修改得数据不传参给接口。

  1. 在 data 对象中添加一个新的属性,用于存储初始表单数据的副本,与当前表单数据进行比较,找出哪些字段发生了变化。
const originalFormData = ref({});
// 或者  originalForm: {}, // 增加原始数据对象

步骤二、

打开修改客户信息的对话框时(在 handleUpdate 函数中),保存当前表单数据的副本到 originalFormData。需要在修改操作时,将当前行的原始数据存储起来,以便后续比较是否修改。可以在handleUpdate方法中添加如下代码:

/** 修改按钮操作 */
function handleUpdate(row) {// 使用当前行的数据填充表单form.value = { ...row };form.value.states = row.states === "0" ? "0" : "1";originalData.value = { ...row }; // 存储原始数据open.value = true;title.value = "修改标签";
}

代码对比

步骤三、

修改 submitForm 函数,在提交表单数据之前,比较当前表单数据与原始数据,构建一个只包含更改过的字段的对象。

/** 提交按钮 */
function submitForm() {proxy.$refs["tagRef"].validate((valid) => {if (valid) {// 表单校验通过,执行提交操作let submitData = {};if (form.value.id != null) {// 修改操作// 遍历form对象,找出修改过的字段for (let key in form.value) {if (key !== 'id' && form.value[key] !== null && form.value[key] !== undefined) {// 这里假设原始数据存储在原始对象originalData中,用于比较是否修改if (form.value[key] !== originalData.value[key]) {submitData[key] = form.value[key];}}}submitData.id = form.value.id; // id字段必须传递updateTag(submitData).then((response) => {proxy.$modal.msgSuccess("修改成功");open.value = false;getList();}).catch((error) => {proxy.$message.error(error.message);});} else {// 新增操作,直接传递整个表单数据addTag(form.value).then((response) => {proxy.$modal.msgSuccess("新增成功");open.value = false;getList();}).catch((error) => {proxy.$message.error(error.message);});}} else {proxy.$message.error("表单中有未填写正确的项,请检查后再次提交。");}});
}

更改前后对比:

http://www.lryc.cn/news/520681.html

相关文章:

  • Flink类加载机制详解
  • ClickHouse大数据准实时更新
  • 计算机网络之---端口与套接字
  • UE5中制作地形材质
  • 【Docker】docker compose 安装 Redis Stack
  • pytest 常用插件
  • 浅谈云计算05 | 云存储等级及其接口工作原理
  • linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包,文本处理sed,awk
  • CentOS 8 如何安装java与mysql
  • Go语言之路————go基本语法、数据类型、变量、常量、输出
  • 音视频入门基础:MPEG2-PS专题(7)——通过FFprobe显示PS流每个packet的信息
  • Docker安装和卸载(centos)
  • YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练
  • Winforms开发基础之非主线程操作UI控件的误区
  • Flutter中Get.snackbar和Get.dialog关闭冲突问题记录
  • springcloudalibaba集成fegin报错ClassNotFoundException解决方案
  • 【HTML+CSS+JS+VUE】web前端教程-31-css3新特性
  • 力扣264. 丑数 II
  • 计算机网络之---TCP连接管理
  • 《CPython Internals》阅读笔记:p118-p150
  • C/C++ 数据结构与算法【排序】 常见7大排序详细解析【日常学习,考研必备】带图+详细代码
  • 三只松鼠携手爱零食,社区零售新高峰拔地而起
  • Java聊天小程序
  • Kibana操作ES基础
  • MYSQL8创建新用户报错:You have an error in your SQL syntax;check...
  • 动漫周边商城系统|Java|SSM|VUE| 前后端分离
  • Vue 3 Diff 算法受 `v-for` 循环中的 `key` 属性影响
  • 江科大STM32入门——看门狗笔记整理
  • 【计算机网络】lab7 TCP协议
  • 计算机视觉:解锁未来智能世界的钥匙