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

  • 企业信息公示系统个体工商户怎么登陆

    企业信息公示系统个体工商户怎么登陆

  • 网络营销释疑:推广之后流量暴涨,然后呢?(网络营销?)

    网络营销释疑:推广之后流量暴涨,然后呢?(网络营销?)

  • 苹果13promax有粉色吗(苹果13promax有粉红色吗)

    苹果13promax有粉色吗(苹果13promax有粉红色吗)

  • 小米手环6怎么设置密码(小米手环6怎么调时间)

    小米手环6怎么设置密码(小米手环6怎么调时间)

  • 华为畅享10plus如何把时间改为24小时(华为畅享10plus如何投屏)

    华为畅享10plus如何把时间改为24小时(华为畅享10plus如何投屏)

  • 电脑怎么命名照片为jpg(电脑上怎么命名照片)

    电脑怎么命名照片为jpg(电脑上怎么命名照片)

  • 抖音极速版和抖音火山版有什么区别(抖音极速版和抖音互通吗)

    抖音极速版和抖音火山版有什么区别(抖音极速版和抖音互通吗)

  • 微型计算机的分类通常以微处理器的什么来划分(微型计算机的分代是根据什么划分的)

    微型计算机的分类通常以微处理器的什么来划分(微型计算机的分代是根据什么划分的)

  • 手机电池的电压是几伏(智能手机电池的电压)

    手机电池的电压是几伏(智能手机电池的电压)

  • 笔记本看直播卡顿是什么原因(笔记本看直播卡顿怎么解决)

    笔记本看直播卡顿是什么原因(笔记本看直播卡顿怎么解决)

  • 华为平板m6有没有耳机孔(华为平板m6有没有红外线功能)

    华为平板m6有没有耳机孔(华为平板m6有没有红外线功能)

  • 华为nova5手机进水保修吗(华为nova5手机进水还能用不)

    华为nova5手机进水保修吗(华为nova5手机进水还能用不)

  • 群空间助手上传的照片别人能不能看见(群空间助手如何上传图片)

    群空间助手上传的照片别人能不能看见(群空间助手如何上传图片)

  • 淘宝红包没收多久退回(淘宝红包不收会退回去吗)

    淘宝红包没收多久退回(淘宝红包不收会退回去吗)

  • 华为荣耀20s上市时间(华为荣耀20s上市价格多少)

    华为荣耀20s上市时间(华为荣耀20s上市价格多少)

  • i58500能装win7吗(i58500可以升级什么cpu)

    i58500能装win7吗(i58500可以升级什么cpu)

  • 快手开店用淘宝还是魔筷(在快手开店好还是在淘宝开店好)

    快手开店用淘宝还是魔筷(在快手开店好还是在淘宝开店好)

  • 华为p30pro怎么拍夜景(华为p30pro怎么拍星星)

    华为p30pro怎么拍夜景(华为p30pro怎么拍星星)

  • 虹动手机是正规手机吗(虹动hoot手机怎么样)

    虹动手机是正规手机吗(虹动hoot手机怎么样)

  • qq视频的时候微信还能接到视频么(qq视频的时候微信来视频怎么显示)

    qq视频的时候微信还能接到视频么(qq视频的时候微信来视频怎么显示)

  • origin界面加载不出来(origin加载不出来)

    origin界面加载不出来(origin加载不出来)

  • iexplore.exe是什么进程?iexplore.exe你那再熟悉不过的进程文件(ieview.exe 是什么)

    iexplore.exe是什么进程?iexplore.exe你那再熟悉不过的进程文件(ieview.exe 是什么)

  • 【已解决】安装cv2时Building wheel for opencv-python终端卡死(【安装 】)

    【已解决】安装cv2时Building wheel for opencv-python终端卡死(【安装 】)

  • AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略

    AI:DeepSpeed Chat(一款帮用户训练自己模型的工具且简单/低成本/快 RLHF 训练类ChatGPT高质量大模型)的简介、安装、使用方法之详细攻略

  • Vue中的数据操作(vue数据表)

    Vue中的数据操作(vue数据表)

  • 企业所得税优惠政策最新2023小微企业
  • 增值税普通发票需要交税吗
  • 行政单位设计费计入哪个科目
  • 小微企业所得税税率2.5% 10% 25%
  • 房地产简易征收可以开专用发票吗
  • 增值税免退税计算方法
  • 物业公司开场地租赁费发票编码
  • 小规模企业应交增值税的二级科目
  • 年化收益率和年利率的区别的例子
  • 进项税当月申报怎么申报
  • 银行多扣钱可以多倍赔偿吗
  • 用党费返还款购置资产应如何账务处理?
  • 园林项目绿化工程
  • 法律关系三要素表
  • 本年度应收账款是否应该加起初
  • 运输发票上的印章怎么弄
  • 稳岗补贴发放给职工需要交个税吗?
  • 汇总纳税申报期
  • 其他综合收益可以转损益的情况
  • 会计报表附表属于会计报表内容吗
  • 建筑企业预缴企业所得税会计分录
  • 发行股票的承销商佣金分录
  • 全民游戏盒子怎么卸载
  • 小规模纳税人取得防伪税控系统普通发票
  • 服务公司收到服务费发票怎么做账
  • 调解仲裁法什么时候实施
  • 印花税的计税
  • 主合同主体变更,从合同怎么处理
  • 融资租赁和经营租赁哪个更常见
  • 无法添加用户和组
  • 联想小新Air15如何进入bois
  • win11如何修复
  • 如何配置无线路由器参数
  • 目前光学变焦最大支持多少倍
  • php occ
  • DWHeartbeatMonitor.exe进程是什么意思 DWHeartbeatMonitor是安全的进程吗
  • assoc .exe=exefile是什么
  • 从性能方面考虑的因素
  • 出口免退增值税计算公式
  • 所得税减免与纳税的关系
  • 预付账款的会计编码是多少?
  • 新准则有哪些
  • 跨年度发票会计分录
  • vue自定义日历组件
  • 个税申报中是否婚前各自首套贷款
  • 如何防止sql注入 java
  • 会计人员信息采集怎么看审核通过
  • python该怎么用
  • 织梦前台的菜单怎么换
  • powerdesigner12.5使用教程
  • mongodb运行
  • 百旺税控盘会自动清卡吗
  • 作废的发票会统计到税额里吗
  • 银行贷款是应付账款吗
  • 出口销售确认书的条款
  • 如何判定企业库存现金
  • 发行价格另支付发行费用
  • 公司贷款手续如何办理流程
  • 代收会计分录
  • 网吧出售
  • 税后扣款怎么做账
  • win8已共享但别电脑无权限
  • win2008 R2 与SP1 PS2无法安装操作系统补丁的解决办法
  • ubuntu系统安装无线网卡驱动
  • 系统没有wmi服务选项
  • linux怎么使用ping命令
  • mac itunes在哪儿
  • centos7 lvs
  • win70x80073712解决方法
  • style js
  • android item属性
  • virtualbox装linux
  • ipa文件分享
  • python读取grib
  • python访问oracle
  • 知道金额和税额怎么求
  • 怎么查税务是否备案
  • 天津环保网站官网
  • 失业金存在多个账户
  • 下列哪些表述是正确的( )
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设