位置: 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的简单部署(如何在你的电脑上截图)

  • 年华似水(年华似水,匆匆流淌,所有人终将老去,但总有人正年轻)

    年华似水(年华似水,匆匆流淌,所有人终将老去,但总有人正年轻)

  • 键盘布局不可用(无法加载键盘布局)(键盘布局不可用怎么解决)

    键盘布局不可用(无法加载键盘布局)(键盘布局不可用怎么解决)

  • 荣耀30青春版是什么处理器(荣耀30青春版是30s吗)

    荣耀30青春版是什么处理器(荣耀30青春版是30s吗)

  • 苹果手机怎么屏幕录屏(苹果手机怎么屏蔽骚扰电话和短信息)

    苹果手机怎么屏幕录屏(苹果手机怎么屏蔽骚扰电话和短信息)

  • 苹果x面部识别移高移低(苹果x面部识别不了是什么原因)

    苹果x面部识别移高移低(苹果x面部识别不了是什么原因)

  • 蚂蚁森林种树有什么奖励(蚂蚁森林种树有年龄限制?)

    蚂蚁森林种树有什么奖励(蚂蚁森林种树有年龄限制?)

  • reste键什么意思(resert键在哪里)

    reste键什么意思(resert键在哪里)

  • 雨课堂可以手机和电脑同时登录吗(雨课堂可以手机上课吗)

    雨课堂可以手机和电脑同时登录吗(雨课堂可以手机上课吗)

  • 手机总收到拼多多短信(老是收到拼多多的各种信息,怎么关掉啊?)

    手机总收到拼多多短信(老是收到拼多多的各种信息,怎么关掉啊?)

  • qq从举报到冻结需要多久(qq举报成功冻结几天)

    qq从举报到冻结需要多久(qq举报成功冻结几天)

  • 迅雷不能下载bt种子解决方法(迅雷不能下载小说)

    迅雷不能下载bt种子解决方法(迅雷不能下载小说)

  • qq为什么发视频不能定时(qq为什么发视频发送不出去)

    qq为什么发视频不能定时(qq为什么发视频发送不出去)

  • 爱奇艺会员两个人用怎么登录(爱奇艺会员两个人不能一起用吗)

    爱奇艺会员两个人用怎么登录(爱奇艺会员两个人不能一起用吗)

  • 为什么ipad软件老闪退(为什么ipad软件点不动)

    为什么ipad软件老闪退(为什么ipad软件点不动)

  • 导航卡和内存卡一样吗(汽车的导航卡和内存卡的区别是什么?)

    导航卡和内存卡一样吗(汽车的导航卡和内存卡的区别是什么?)

  • 淘宝pc页面是什么意思(淘宝pc端叫什么)

    淘宝pc页面是什么意思(淘宝pc端叫什么)

  • 网络机顶盒怎么调试(网络机顶盒怎么看电视直播频道)

    网络机顶盒怎么调试(网络机顶盒怎么看电视直播频道)

  • 苹果7p电池更换教程(苹果7p电池更换视频教程)

    苹果7p电池更换教程(苹果7p电池更换视频教程)

  • 怎么把拼多多链接放进抖音(怎么把拼多多链接转换口令)

    怎么把拼多多链接放进抖音(怎么把拼多多链接转换口令)

  • 苹果维修搬板是什么意思(苹果维修搬板是拆机吗)

    苹果维修搬板是什么意思(苹果维修搬板是拆机吗)

  • 小米手机未知来源在哪里设置(小米手机未知来电不显示号码)

    小米手机未知来源在哪里设置(小米手机未知来电不显示号码)

  • YOLOv5 txt标签转图像标签(多个标签)(yolov5标签格式)

    YOLOv5 txt标签转图像标签(多个标签)(yolov5标签格式)

  • 波士顿房价数据集进行数据预处理和模型训练(Python)(波士顿房价数据集可视化)

    波士顿房价数据集进行数据预处理和模型训练(Python)(波士顿房价数据集可视化)

  • 编程工具-GPT来AI编程代码(gpgpu编程技术)

    编程工具-GPT来AI编程代码(gpgpu编程技术)

  • IDEA 创建Maven Web项目(idea 创建maven项目读取pom报错)

    IDEA 创建Maven Web项目(idea 创建maven项目读取pom报错)

  • python使用send启动生成器(python send_from_directory)

    python使用send启动生成器(python send_from_directory)

  • 怎么把销项税额进项税额给转掉
  • 结转增值税会计凭证
  • 企业增资后需要交什么税
  • 一季度季初从业人数
  • 个体工商户是否家庭经营的区别
  • 卷烟批发环节消费税税率
  • 窗帘属于固定资产
  • 个人挂靠利润如何提取
  • 收到赠品入库需要用什么记录
  • 房产租金收入房产税
  • 离职未收回货款要我承担
  • 个人股东从公司借款合法吗
  • 营业外收入交税会计分录
  • 公司成立多久费用可进开办费
  • 餐饮定额发票可以用吗现在
  • 个人缴纳工会费可以在工资里面扣交吗
  • 小规模专票普票都开怎么申报增值税
  • 商品税目是什么意思4001
  • 报销差旅费必须要车票吗
  • 一般纳税人是否享受小型微利企业优惠政策
  • 待抵扣进项税额借贷方向
  • 可供出售金融资产会计处理
  • 小规模纳税人代理销售税率是多少
  • 收购企业收购方和被收购方如何做账?
  • 短期融资券是
  • 房地产公司未售房产出租账务处理
  • 北大新闻传播学院副院长
  • 不动产抵押合同管辖法院
  • php中数组的常用函数及用法
  • 公司已经控股一年怎么办
  • 招待费的范畴
  • 所得税季报填报说明
  • npm命令不存在
  • logd是什么进程
  • pyecharts绘制柱状图动态图
  • 过桥资金账务处理
  • 研发机构采购国产设备退税管理办法
  • 集团内部资金拆借利息增值税
  • 未确认融资费用报表填在哪个科目
  • 计算机网络的定义
  • 落日时光
  • php代理访问
  • gawk命令 模式扫描与处理语言
  • 帝国cms配置数据库
  • 如何网上添加办税员上海
  • 员工出国公司要承担的责任
  • 销售黄金的会计分录
  • mysql自动生成id
  • dedecms采集怎么用
  • 职工短期薪酬包括哪些
  • 增值税是指哪些税种
  • 法人可以领退休金吗
  • 收据大写后面的空格怎么填
  • 货先到发票后到怎么办
  • 雇用残疾人税收优惠
  • 支付给法律顾问怎么做账
  • 充卡送礼品送些什么好
  • 劳务派遣公司账务
  • 无成本票如何避税
  • 房地产企业预缴增值税
  • 企业的收入总额
  • 个体户要怎么注册公司
  • 专用发票与普通发票图片
  • 多收客户购置税怎么处理
  • redhat系列
  • centos 安装chia
  • linux系统编译命令
  • centos如何操作
  • centos安装总结
  • win7系统怎么创建虚拟网络
  • 驱动人生公司怎么样
  • win7共享文件设置
  • log4j 日志文件太大
  • node.js如何运行
  • Python的flask框架教程
  • 大连税务稽查局魏禾简历
  • 临时占用耕地是否需要缴纳城镇土地使用税
  • 消费税由谁来承担
  • 外出经营需要交哪些税
  • 重庆税务总局发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设