位置: IT常识 - 正文

Vue表单数据修改与删除(vue修改表格数据)

编辑:rootadmin
Vue表单数据修改与删除

推荐整理分享Vue表单数据修改与删除(vue修改表格数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue表单只提交修改字段,vue表单给值做改变,vue修改表格数据,vue表单给值做改变,vue怎么修改,vue修改数据后怎么让数据更新,vue修改表格数据,vue表单只提交修改字段,内容如对您有帮助,希望把文章链接给更多的朋友!

学习来源:视频p6 书接上文

目录数据修改功能修改对话框视频教程的做法后端提供接口前端调用接口修改完成后提交数据删除功能后端开设接口前端调用最终成果展示数据修改功能

将之前的 BookManage 页面的按钮改为想要的功能 可以注意到修改按钮的标签以及绑定了事件 handleClick 点击之后其可以在控制台打印出当前行对象的内容 观看视频时,关于修改数据,弹幕分为了两派 一派认为因该直接从页面中获取现有的数据信息加以修改,再提交给后端并存储到数据库,此流程业务简单,减轻服务器负荷。 还有一派认为因该依据关键信息或唯一标识,从后台请求这一系列数据,在此基础上进行修改,再提交给后端并存储到数据库,此流程数据安全。

我认为确实应该从后端拿数据,毕竟前端显示的数据不一定是完整信息,最全最新的内容肯定是在数据库当中,所有从后端拿数据重新修订再保存到数据库更加安全严谨。

相较于视频中新增一个页面的方式,我选择以弹出框来展示修改页面,这样我认为更切合实际场景

修改对话框

其核心内容就是 dialogFormVisible 这个属性在点击关键字时改为 true(默认是false) 所以运用到原来的页面上,当点击“修改”时,把这个属性置为 true 即可

弹出的表单用原来的新增页面进行代码结合复用 将一下代码拆分放入对应位置即可

<template> <div> <el-button type="text" @click="dialogFormVisible = true">修改 Dialog</el-button> <el-dialog title="修改" :visible.sync="dialogFormVisible"> <el-form style="width: 80%" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"> <el-form-item label="书名" prop="name"> <el-input v-model="ruleForm.name"></el-input> </el-form-item> <el-form-item label="作者" prop="author"> <el-input v-model="ruleForm.author"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button> <el-button @click="resetForm('ruleForm')">重置</el-button> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">取 消</el-button> <el-button type="primary" @click="dialogFormVisible = false">确 定</el-button> </div> </el-dialog> </div></template><script> export default { data() { return { dialogFormVisible: false, formLabelWidth: '120px', ruleForm: { name: '', author: '' }, rules: { name: [ { required: true, message: '书名不能为空', trigger: 'blur' } ], author: [ { required: true, message: '作者不能为空', trigger: 'blur' } ], } }; }, methods: { submitForm(formName) { const _this = this; this.$refs[formName].validate((valid) => { if (valid) { axios.post("http://localhost:8181/book/save",this.ruleForm).then(function (resp) { if (resp.data == "success"){ _this.$alert("《"+_this.ruleForm.name+"》添加成功", '成功', { confirmButtonText: '确定', callback: action => { _this.$router.push("/BookMange"); } }); }else{ _this.$message.error("添加失败"); } }) } else { console.log('添加失败'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); }, } }</script>

最终效果如下

视频教程的做法

创建额外的页面,当点击修改按钮时,进行页面跳转,并用 query 传递操作的 id 信息

handleClick(row) { this.$router.push({ path: '/update', query:{ id: row.id } })},Vue表单数据修改与删除(vue修改表格数据)

在新的页面初始化地方进行接收参数,请求后端数据 需要跳转用 $router ,需要接收参数用 $route

拓展阅读 route 和 router的区别 params 和 query 传递参数的区别

后端提供接口

之前 bookRepository 继承的 JPA 接口中,也已经写好了 findById() 函数,对我们来说相当方便,只是这个接口返回的对象是 Optional 的对象,其可以把空的对象也能正常包装并返回,避免出现空指针异常导致程序崩溃,Optional讲解 再调用 get() 方法以获取到对象,结果也是能正确输出的 则下一步写入handler接口供外部调用

@GetMapping("/findById/{id}")public Book findById(@PathVariable("id") Integer id){ return bookRepository.findById(id).get();}

经测试也是可以使用的,故在前端调用

前端调用接口

当点击 修改 操作时,对调用函数 handleClick 进行修改

handleClick(row) { const _this = this; this.dialogFormVisible = true; axios.get("http://localhost:8181/book/findById/"+row.id).then(function (resp) { _this.ruleForm = resp.data; })},

即可实现点击后出现弹窗+载入修改的目录信息

修改完成后提交

将之前的立即创建改成符合业务逻辑的“修改完成” 然后对函数 submitForm 改装一下即可 其实目前实际使用看来,不改装也能满足业务逻辑需求,JPA 的save函数自动帮我们把对象存进去了 JPA是判定了当前参数是否携带主键,如果没有就存入,如果有就修改内容

但为了业务严谨,并且以后可能遇到更复杂的业务逻辑,针对修改功能还是有必要专门开辟接口的 且根据 REST 规范,更新应该使用 PUT 请求 所以直接在 handler 里面新增接口

@PutMapping("/update")public String update(@RequestBody Book book){ Book result = bookRepository.save(book); if (result != null){ return "success"; } else { return "fail"; }}

将此处的 post 改为 put ,接口网址改成 update

即可实现修改功能

数据删除功能后端开设接口@DeleteMapping("/deleteById/{id}")public void delete(@PathVariable("id") Integer id){ bookRepository.deleteById(id);}前端调用

按钮组件绑定函数

deleteBook(row){ const _this = this; axios.delete("http://localhost:8181/book/deleteById/"+row.id).then(function (resp) { if (resp.status == 200){ _this.$alert("《"+row.name+"》删除成功", '成功', { confirmButtonText: '确定并刷新', callback: action => { _this.$router.go(0); } }); }else{ _this.$message.error("删除失败"); } })},最终成果展示

主页面js代码

<script> export default { methods: { handleClick(row) { const _this = this; this.dialogFormVisible = true; axios.get("http://localhost:8181/book/findById/"+row.id).then(function (resp) { _this.ruleForm = resp.data; }) }, deleteBook(row){ const _this = this; axios.delete("http://localhost:8181/book/deleteById/"+row.id).then(function (resp) { if (resp.status == 200){ _this.$alert("《"+row.name+"》删除成功", '成功', { confirmButtonText: '确定并刷新', callback: action => { _this.$router.go(0); } }); }else{ _this.$message.error("删除失败"); } }) }, page(currentPage){ const _this = this; axios.get("http://localhost:8181/book/findPart/"+currentPage+"/3").then(function (resp) { _this.tableData = resp.data.content; _this.total = resp.data.totalElements; }) }, submitForm(formName) { const _this = this; this.$refs[formName].validate((valid) => { if (valid) { axios.put("http://localhost:8181/book/update",this.ruleForm).then(function (resp) { if (resp.data == "success"){ _this.$alert("《"+_this.ruleForm.name+"》修改成功", '成功', { confirmButtonText: '确定', callback: action => { _this.$router.go(0); } }); }else{ _this.$message.error("修改失败"); } }) } else { console.log('添加失败'); return false; } }); }, resetForm(formName) { this.$refs[formName].resetFields(); }, }, created(){ const _this = this; axios.get("http://localhost:8181/book/findPart/1/3").then(function (resp) { _this.tableData = resp.data.content; _this.total = resp.data.totalElements; }) }, data() { return { total: null, tableData: null, dialogFormVisible: false, dialogFormVisible: false, formLabelWidth: '120px', ruleForm: { name: '', author: '' }, rules: { name: [ { required: true, message: '书名不能为空', trigger: 'blur' } ], author: [ { required: true, message: '作者不能为空', trigger: 'blur' } ], } } } }</script>

本文链接地址:https://www.jiuchutong.com/zhishi/290898.html 转载请保留说明!

上一篇:韦尼格罗德的圣诞市场,德国萨克森-安哈尔特州 (© Krzysztof Baranowski/Moment/Getty Images)(韦罗尼卡)

下一篇:如何在你的电脑上完成whisper的简单部署(如何在你的电脑上截图)

  • 苹果13带耳机吗(苹果13带耳机吗怎么用)

    苹果13带耳机吗(苹果13带耳机吗怎么用)

  • 钉钉群里两个名字怎么删除一个(钉钉群里两个名字怎么弄)

    钉钉群里两个名字怎么删除一个(钉钉群里两个名字怎么弄)

  • mt732ch/a是什么版本

    mt732ch/a是什么版本

  • 闲鱼一键转卖什么意思(闲鱼一键转卖怎么赚钱?)

    闲鱼一键转卖什么意思(闲鱼一键转卖怎么赚钱?)

  • 荣耀30s和华为nova7se有什么区别(荣耀30s和华为nova6se哪个好)

    荣耀30s和华为nova7se有什么区别(荣耀30s和华为nova6se哪个好)

  • 手机云台用处大吗(手机云台有用吗)

    手机云台用处大吗(手机云台有用吗)

  • 华为手机悬浮球怎么开(华为手机悬浮球在哪里打开)

    华为手机悬浮球怎么开(华为手机悬浮球在哪里打开)

  • 手机开启5g后还是显示4g(手机开启5g后还有信号吗)

    手机开启5g后还是显示4g(手机开启5g后还有信号吗)

  • office自动续费后可以退吗(office自动续费后一定要把欠款交齐吗)

    office自动续费后可以退吗(office自动续费后一定要把欠款交齐吗)

  • iphone怎么暗黑模式(iphone暗黑模式怎么设置)

    iphone怎么暗黑模式(iphone暗黑模式怎么设置)

  • 一个人可以申请几个抖音号(一个人可以申请几个支付宝号码)

    一个人可以申请几个抖音号(一个人可以申请几个支付宝号码)

  • windows10有几个版本(window10有几个版本)

    windows10有几个版本(window10有几个版本)

  • 数据模型的三要素(数据模型的三要素为层次模型网状模型和面向对象模型)

    数据模型的三要素(数据模型的三要素为层次模型网状模型和面向对象模型)

  • 耳机l是左还是右(耳机l是左还是R是左)

    耳机l是左还是右(耳机l是左还是R是左)

  • vivo手机怎么查看历史下载(vivo手机怎么查手机型号)

    vivo手机怎么查看历史下载(vivo手机怎么查手机型号)

  • 手机上怎么恢复支付宝账单(手机上怎么恢复删除的qq好友)

    手机上怎么恢复支付宝账单(手机上怎么恢复删除的qq好友)

  • 手机银行如何查流水(手机银行如何查询几年前的记录)

    手机银行如何查流水(手机银行如何查询几年前的记录)

  • 用手机怎么注销qq号(用手机怎么注销营业执照)

    用手机怎么注销qq号(用手机怎么注销营业执照)

  • 三星smg9600是三星s9吗

    三星smg9600是三星s9吗

  • 如何保证ppt格式不变(如何保证PPT格式不变)

    如何保证ppt格式不变(如何保证PPT格式不变)

  • 蘑菇街钱包在哪里(蘑菇街余额怎么使用)

    蘑菇街钱包在哪里(蘑菇街余额怎么使用)

  • 苹果id验证码在哪里输入(苹果id验证码在哪收)

    苹果id验证码在哪里输入(苹果id验证码在哪收)

  • 苹果微博的缓存的视频在哪里可以看(苹果微博缓存变成本地视频)

    苹果微博的缓存的视频在哪里可以看(苹果微博缓存变成本地视频)

  • 小红书如何查看订单(小红书如何查看注册时间)

    小红书如何查看订单(小红书如何查看注册时间)

  • 房屋出租需要交税多少起征
  • 住宿发票税点为什么有6%和3%的区别
  • 个税里任职受雇从业类型
  • 哪些财务指标可以用于判断一个企业即将发生财务危机
  • 购销合同赔偿比例一般多少
  • 外资企业研发中心
  • 下岗职工可以享受低保吗
  • 农产品销售发票可以抵扣吗?
  • 退休回聘政策与程序
  • 存货残料收入账务处理?
  • 取得转账支票后该如何处理
  • 购买毛巾的费用是多少
  • 房地产企业汇算清缴报表
  • 赔偿金要交增值税吗
  • 大型超市税收分析报告
  • 计提生产经营
  • 高速支付宝支付如何开发票
  • 补贴收入营业外收入比例过高
  • linux CentOS WEB服务器分区方案
  • win10开机启动项怎么删除
  • 工资薪金与劳务报酬的区别有哪些
  • 实例简介php的一般过程
  • php密码加密和解密
  • 小规模纳税人的企业所得税怎么算
  • 建筑行业挂靠开票怎么做账务处理?
  • 微软win11预览版
  • 高新技术企业如何在电子税务局备案
  • yii框架运行原理
  • php自定义变量的方法是
  • 普通发票收款人填管理员可以吗
  • 网上购物没有发票怎么保修
  • 培训费个人的发票能开吗
  • 企业增值税发票管理办法
  • 学电脑网站
  • 加计抵减会计分录其他收益
  • 企业合并发生的法律服务费影响利润总额吗
  • 抵扣进项税额是啥意思
  • Mysql创建通用设备管理信息系统数据库
  • 收到以前年度退回的企业所得税怎么做账
  • 管理费用是怎么计算的
  • 用现金支付的款项
  • 小规模印花税有减免政策吗
  • 资产减值损失属于损益类的收入还是费用
  • 取得航空公司收票的票据
  • 什么是无形资产包括哪些
  • 房屋租赁产生的税费叫什么
  • 代账公司帮客户开发票
  • 机票行程单上没有金额怎么报销
  • 工资扣水电费怎么做账
  • 财务专用章的效力
  • 装修费用怎么结算
  • 会计一般月初忙几天
  • 新成立企业建账流程
  • win10 rs5
  • linux系统清理磁盘空间
  • windowsxp无法定位程序输入点
  • linux如何查询
  • freebsd操作命令
  • 服务器迁移至新服务器方法
  • centos7修改远程登录端口
  • window10隐私常规设置
  • xp启用windows功能
  • win7temp文件夹在哪
  • linux虚拟空间
  • cocos creator js ts
  • drawcalls2000多
  • vs2013怎么配置环境
  • 批处理copy合并文件
  • jquery操作
  • python整理表格不用入门
  • python数据验证
  • unity3d模型怎么制作
  • 全面理解和准确把握新时代党的建设总要求心得体会
  • jquery自带的弹出框
  • unity vtext
  • 江苏地税电子税务局官网登录
  • 小规模企业所得税怎么算
  • 个人社保缴纳年限怎么算
  • 经营碎石的税点多少
  • 2021年小规模纳税人优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设