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


请添加图片描述

相关内容

热门资讯

领导证婚人婚礼精彩致辞 领导证婚人婚礼精彩致辞(通用13篇)  在平平淡淡的学习、工作、生活中,大家都不可避免地要接触到致辞...
儿童节主持词 儿童节主持词(精选15篇)  主持人在台上表演的灵魂就表现在主持词中。现今社会在不断向前发展,主持人...
追悼会的主持词 关于追悼会的主持词范文(精选11篇)  根据活动对象的不同,需要设置不同的主持词。时代不断在进步,主...
《香水》经典台词 《香水》经典台词  在学习、工作生活中,越来越多人会去使用台词,台词起着交代人物关系和背景、进行剧情...
公司年会晚会主持词2019   公司年会晚会主持词2019【一】  甲(女):尊敬的曾总、王书记,亲爱的各位同事,  合:大家好...
学校元旦晚会主持稿开场白 学校元旦晚会主持稿开场白  主持词并没有固定的格式或者模板,个性就是主持词的特点。不同内容的活动,不...
乔迁之喜主持词 乔迁之喜主持词(通用13篇)  契合现场环境的主持词能给集会带来双倍的效果。在如今这个时代,我们对主...
小学元旦晚会主持词 有关小学元旦晚会主持词(通用8篇)  主持词已成为各种演出活动和集会中不可或缺的一部分。现今社会在不...
电视剧《神话》:台词非常雷人 电视剧《神话》:台词非常雷人  1:你是北电、中戏还是上戏  2:幸亏我那天在看完仙剑之后还不忘关注...
双簧剧本台词 双簧剧本台词双簧剧本台词如此双簧道具:椅子一把,化装白油彩,浸满水的手绢一条(开场,甲从舞台左边上场...
大会主持词 大会主持词15篇  活动对象的不同,主持词的写作风格也会大不一样。在当今社会生活中,司仪等是很多场合...
庆祝元旦演出的主持词 庆祝元旦演出的主持词范文(通用8篇)  主持词是主持人在节目进行过程中用于串联节目的串联词。时代不断...
新郎致辞 新郎致辞(精选18篇)  在日常学习、工作抑或是生活中,大家总免不了要接触或使用致辞吧,致辞具有针对...
舞蹈串词 舞蹈串词a:尊敬的各位领导 尊敬的各位领导 b:敬爱的老师 敬爱的老师 c:亲爱的同学们 亲爱的同学...
电影《北京爱情故事》经典台词 电影《北京爱情故事》经典台词1、我们的生命中总会出现这样的一个瞬间,某时某地你会遇见某个人。2、结婚...
晨会的主持词怎么写 晨会的主持词怎么写  主持人在台上所表演的主持词,则这样集会的灵魂之所在。下面小编整理的晨会的主持词...
圣诞晚会主持词结束语 圣诞晚会主持词结束语(精选11篇)  主持词要注意活动对象,针对活动对象写相应的主持词。在当下的中国...
母亲节感恩的心主持词 母亲节感恩的心主持词  主持词需要富有情感,充满热情,才能有效地吸引到观众。随着社会一步步向前发展,...
蓝色大门经典台词 蓝色大门经典台词  1、林月珍:张士豪他每天晚上,都会偷偷来游泳,他是游泳队的。  孟克柔:看什么?...
宫崎骏《起风了》的经典台词 宫崎骏《起风了》的经典台词  1、起风了,唯有努力生存。  2、再没有什么比幸福的回忆更妨碍幸福的了...