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

  • 手机cpu排行榜(最新的手机cpu排行榜)

    手机cpu排行榜(最新的手机cpu排行榜)

  • 超过5分钟的视频怎么在微信上发(超过5分钟的视频怎么发到朋友圈)

    超过5分钟的视频怎么在微信上发(超过5分钟的视频怎么发到朋友圈)

  • 小米mix4是曲面屏吗(小米mix4曲面屏曲度多少)

    小米mix4是曲面屏吗(小米mix4曲面屏曲度多少)

  • 钉钉如何挂后台(怎么挂着钉钉)

    钉钉如何挂后台(怎么挂着钉钉)

  • 佳能6018硒鼓型号(佳能6018l硒鼓与哪个硒鼓兼容)

    佳能6018硒鼓型号(佳能6018l硒鼓与哪个硒鼓兼容)

  • 华为成立于哪一年(华为成立于几月几日)

    华为成立于哪一年(华为成立于几月几日)

  • 群主能删除别人发错的信息吗(群主能删除别人发的图片吗)

    群主能删除别人发错的信息吗(群主能删除别人发的图片吗)

  • 手机系统缓存能清理吗(手机缓存能恢复吗)

    手机系统缓存能清理吗(手机缓存能恢复吗)

  • 微信不能自动打开文档(微信不能自动打开word)

    微信不能自动打开文档(微信不能自动打开word)

  • 找不到网络主机是什么原因(大华摄像头添加后显示找不到网络主机)

    找不到网络主机是什么原因(大华摄像头添加后显示找不到网络主机)

  • 同步异步区别(同步异步区别数电)

    同步异步区别(同步异步区别数电)

  • 华为手机怎么没有耳机插孔(华为手机怎么没有5G了)

    华为手机怎么没有耳机插孔(华为手机怎么没有5G了)

  • 磁盘是内存吗(手机如何清理磁盘空间)

    磁盘是内存吗(手机如何清理磁盘空间)

  • wps会员可以登录几个电脑(WPS会员可以登录几台设备)

    wps会员可以登录几个电脑(WPS会员可以登录几台设备)

  • 戴尔蓝牙鼠标怎么连接电脑(戴尔蓝牙鼠标怎么充电)

    戴尔蓝牙鼠标怎么连接电脑(戴尔蓝牙鼠标怎么充电)

  • 怎么减小照片大小kb(怎么减小照片大小kb画质不变)

    怎么减小照片大小kb(怎么减小照片大小kb画质不变)

  • 管理员怎么改群员名片(管理员怎么改群主的昵称)

    管理员怎么改群员名片(管理员怎么改群主的昵称)

  • 荣耀20s支持多少瓦快充(荣耀20s支持多少瓦充电)

    荣耀20s支持多少瓦快充(荣耀20s支持多少瓦充电)

  • 探探每天早上6点刷新吗(探探每天刷新时间)

    探探每天早上6点刷新吗(探探每天刷新时间)

  • iphone 11什么时候上市(iphone 11什么时候发布的)

    iphone 11什么时候上市(iphone 11什么时候发布的)

  • 苹果app自动扣费怎么取消(苹果App自动扣费是怎么回事)

    苹果app自动扣费怎么取消(苹果App自动扣费是怎么回事)

  • xsmax充电到80不动了

    xsmax充电到80不动了

  • 小米9和小米9透明版有什么区别(小米9和小米9透明版参数对比)

    小米9和小米9透明版有什么区别(小米9和小米9透明版参数对比)

  • 抖音怎么让原音变声(抖音怎么原音加自己的声音)

    抖音怎么让原音变声(抖音怎么原音加自己的声音)

  • oppok1返回键在哪(oppo k1返回键怎么设置)

    oppok1返回键在哪(oppo k1返回键怎么设置)

  • file命令  识别文件类型(file读取文件内容)

    file命令 识别文件类型(file读取文件内容)

  • rfkill命令  管理蓝牙和WIFI设备(rf-kill)

    rfkill命令 管理蓝牙和WIFI设备(rf-kill)

  • 公司注销,账务怎么处理
  • 销售旧货的增值税税率
  • 营业收入与利润变化图
  • 小微企业一般要交什么费用2019
  • 计算企业所得税不得扣除的项目
  • 商品流通企业成本核算的内容包括
  • 建筑施工企业销售费用包括哪些
  • 个人所得税允许扣除的费用
  • 送员工礼物
  • 固定基金会计分录怎么处理
  • 设定提存计划怎么填
  • 小型微利企业所得税优惠政策2023超过100万
  • 债务重组会计处理中,债务人确认的债务重组利得
  • 商业折扣销售会计分录
  • 委托出口货物怎么办理退免税?
  • 个体户的公账怎么操作
  • 银行年费计入管理费用还是财务费用
  • 领用自产产品用于在建工程入账金额
  • 百旺发票修复怎么弄
  • 计提应收票据利息怎么算
  • 收到融资租赁利息专票进项税额要转出吗
  • 内存频率调整教程图解
  • 用户登录系统后首先进入什么
  • 注册的注释
  • 标准差怎么算 例题
  • 社保会计科目怎么做账
  • 抵扣了的进项税可以冲销么
  • 销售折让负数发票如何入账
  • 坏账准备确认条件
  • 建筑业主营业务成本包括哪些
  • linux怎样安装
  • 计算应缴房产税的公式
  • vue3.0解决跨域
  • php轻松入门视频教程
  • 公司为员工投保意外险,意外险赔付给谁
  • 什么是工资薪金所得
  • el-table懒加载合并行
  • php怎么设置图片的大小
  • hbuilderx安装教程视频
  • 用css画一个扇形
  • 增值税专用发票和普通发票的区别
  • 生产销售库存的会计科目
  • mongodb数据库操作题
  • System.Data.SQLite 数据库详细介绍
  • 个体户电子申报税流程
  • 营业外支出的内容包括
  • 税盘开票机号怎么看
  • 付了工资的资产负债表怎么填
  • mysql如何开启
  • 事业单位收到专票的风险
  • 疫情期间提涨薪合适吗
  • 一般纳税人进项销项抵扣如何做账
  • 哪些员工出差的多
  • 税务评估价多久更新一次
  • 已抵扣发票红冲做进项税转出
  • 购进商品的运费计入什么科目
  • 固定资产报废会计科目处理
  • 固定资产折旧的会计科目
  • 不动产发票开具规则
  • 房屋租赁合同印花税的税率
  • 利息发票可以抵税吗
  • 商业企业库存商品
  • 做好一个服务器工作
  • auepuc.exe是什么软件
  • Windows文件夹共享权限不足
  • rhel7
  • win7小键盘数字键不能用怎么办
  • win8怎么打开word
  • win8桌面在哪
  • windows7禁止开机启动
  • win7电脑dns存在问题怎么修复
  • 批处理for命令详解
  • 纯css实现轮播图
  • 深入理解ffmpeg pdf
  • ShareSdk实现第三方分享功能
  • 轻松实现的英文
  • 税务工作意见和建议
  • 怎么查询个人所得税申报成功
  • 1950土地改革后土地所有权
  • 如何开展班级全部活动
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设