Vue表单数据修改与删除
创始人
2024-05-28 17:11:52
0

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

目录

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

页面修改

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

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

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

修改对话框

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

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

最终效果如下

请添加图片描述

视频教程的做法

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

handleClick(row) {this.$router.push({path: '/update',query:{id: row.id}})
},

在这里插入图片描述
在新的页面初始化地方进行接收参数,请求后端数据
在这里插入图片描述
需要跳转用 $router ,需要接收参数用 $route 拓展阅读route 和 router的区别

后端提供接口

之前 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代码


请添加图片描述

相关内容

热门资讯

英语简单句子的翻译【推荐6篇... 英语简单句子的翻译 篇一第一篇内容在英语学习中,简单句子是我们最常见的句子类型之一。它由一个主语和一...
我的暑假计划英语作文 我的暑假计划英语作文(精选3篇)  在日常学习、工作和生活中,大家一定都接触过作文吧,根据写作命题的...
我的爸爸My FATHER... 我的爸爸 My Father篇一My FatherMy father is the most imp...
旅游英语作文翻译(最新3篇) 旅游英语作文翻译 篇一标题:我的梦想之旅——探索英国英国一直是我梦寐以求的旅行目的地。我对英国的文化...
神投手英语作文【推荐3篇】 神投手英语作文 篇一The Extraordinary PitcherIn the world of...
春节的英语作文【通用6篇】 春节的英语作文 篇一The Celebration of Chinese New YearChine...
绿色校园的英语作文【推荐3篇... 绿色校园的英语作文 篇一Creating a Green CampusIn recent years...
广东中考英语作文范文背诵(精... 广东中考英语作文范文背诵 篇一My Dream VacationI have always drea...
小学英语作文:The Hal... 小学英语作文:The Halloween Party 篇一The Halloween PartyLa...
庆祝母亲节的英语作文(实用6... Celebrating Mother's Day - Article 1Mother's Day i...
旅行英语作文(精选6篇) 旅行英语作文 篇一Traveling in ChinaWhen it comes to travel...
复活节的英文资料【通用3篇】 复活节的英文资料 篇一Easter, also known as Resurrection Sund...
我的假期英语作文【优秀6篇】 我的假期英语作文 篇一My Holiday AdventureDuring my summer va...
英语六级作文 英语六级作文(通用13篇)  在日常生活或是工作学习中,大家都不可避免地会接触到作文吧,作文是人们以...
英语写作素材积累:高级词汇【... 英语写作素材积累:高级词汇 篇一In today's globalized world, havin...
手机的作用英语作文(精简5篇... 手机的作用英语作文 篇一The Importance of Mobile PhonesMobile ...
我的同桌中英文作文【精选6篇... 我的同桌中英文作文 篇一Title: My Desk MateI have had the same...
清洁工的英语作文(精简6篇) 清洁工的英语作文 篇一The Importance of Cleaners in Our Socie...
又是一天作文200字(精选3... 又是一天作文200字 篇一阳光洒在我的脸上,唤醒了我美好的一天。我迅速起床,洗漱完毕后,走进厨房准备...
唯美英语小句子【经典6篇】 唯美英语小句子 篇一In the fast-paced world we live in, it i...