vue2新增删除
(只是页面实现,不涉及数据库)
list组件:
<button @click="onAdd">新增</button><el-table:header-cell-style="{ textAlign: 'center' }" :cell-style="{ textAlign: 'center' }":data="tableData"style="width: 100%"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnprop="id"label="序号"max-width="100"></el-table-column><el-table-columnprop="name"label="姓名"max-width="100"></el-table-column><el-table-columnprop="address"max-width="100"label="地址"></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-buttonsize="mini"@click="handleEdit( scope.row)">编辑</el-button><el-buttonsize="mini"type="danger"@click="handleDelete(scope.row)">删除</el-button></template></el-table-column></el-table>// 引入 新增弹框组件<Add :visible.sync="dialogVisible" :title="title" /><!-- 引入 编辑弹框组件 --><Edit :visible.sync="dialog" :title="titleedit" :item="ruleForm" @save="saveItem" />
js部分:created(){//获取列表数据this.getUser(),// 监听 'formSubmitted' 事件,当表单数据提交时更新列表EventBus.$on('formSubmitted', (newData) => {// 计算当前 tableData 中的最大 id 添加数据时候 id按照顺序自增const maxId = this.tableData.length > 0 ? Math.max(...this.tableData.map(item => item.id)) : 0;// 设置新的 idnewData.id = maxId + 1;this.tableData.push(newData); // 添加新数据到 dataList});},methods:{// 点击新增按钮onAdd(){this.dialogVisible=true;},// 删除handleDelete( row ) {console.log(row)this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning',center: true}).then(() => {// 通过 row 数据找到索引并删除const itemIndex = this.tableData.findIndex(item => item.id === row.id);console.log(itemIndex)if (itemIndex !== -1) {this.tableData.splice(itemIndex, 1);}this.reassignIds()this.$message({type: 'success',message: '删除成功!'});}).catch(() => {this.$message({type: 'info',message: '已取消删除'});});},// 重新分配数据的id 保证其自增reassignIds(){this.tableData.forEach((item,index)=>{item.id=index+1})}
}// 编辑
handleEdit(row){console.log(row,'row')this.dialog=true;this.titleedit="编辑"this.ruleForm={...row} // // 复制项的数据到 列表中
},// 保存编辑后的项saveItem(updatedItem) {console.log(updatedItem,'updatedItem')// 更新列表中的数据,通常会同步到后端const index = this.tableData.findIndex(item => item.id === updatedItem.id);if (index !== -1) {this.$set(this.tableData, index, { ...updatedItem }); // 使用 Vue.set 来确保响应式更新数据列表console.log(this.tableData,'this.tableData[index]')}}
Add组件:
<el-dialog:title="title":visible.sync="visible"width="30%"center><el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="序号" prop="id"><el-input type="text" v-model="ruleForm.id" ></el-input></el-form-item><el-form-item label="姓名" prop="name"><el-input type="text" v-model="ruleForm.name"></el-input></el-form-item><el-form-item label="地址" prop="address"><el-input v-model.number="ruleForm.address"></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></el-dialog>js部分:import {EventBus} from '../util/eventBus';export default {data() {return {ruleForm:{// id:'',name:'',address:''},rules: {// id: [// { required: true, message: '序号不能为空', trigger: 'blur' }// ],name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],address: [{ required: true, message: '地址不能为空', trigger: 'blur' }]}}},props:{visible:{typeof:Boolean,default:false},title:{typeof:String,default:''}},watch:{visible(newVal){this.$emit('update:visible', newVal);}},methods:{closeDialog(){this.$emit('update:visible', false); },
// 提交
// 提交表单submitForm(formName) {this.$refs[formName].validate((valid) => {if (valid) {// 提交数据到 Vuexconst formCopy = { ...this.ruleForm }; // 创建 ruleForm 的副本EventBus.$emit('formSubmitted', formCopy);this.$message.success('提交成功');this.ruleForm.name=''this.ruleForm.address=''this.closeDialog();} else {// this.$message.error('表单验证失败');}});},// 重置resetForm(formName) {this.$refs[formName].resetFields();}}};
</script>
event-bus.js中:// event-bus.js
import Vue from 'vue';
// 创建一个空的 Vue 实例作为事件总线
export const EventBus = new Vue();
// 编辑弹框
<template><div><el-dialog:title="title":visible.sync="visible"width="30%"center><el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="姓名" prop="name"><el-input type="text" v-model="ruleForm.name"></el-input></el-form-item><el-form-item label="地址" prop="address"><el-input v-model.number="ruleForm.address"></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></el-dialog></div>
</template><script>
import {EventBus} from '../util/eventBus'export default {data() {return {ruleForm:{name:'',address:''},rules: {name: [{ required: true, message: '姓名不能为空', trigger: 'blur' }],address: [{ required: true, message: '地址不能为空', trigger: 'blur' }]}}},props:{visible:{typeof:Boolean,default:false},title:{typeof:String,default:''},item:{typeof:Object,default:()=>({})}},watch:{visible(newVal){this.$emit('update:visible', newVal);},item(newItem){this.ruleForm={...newItem}}},methods:{closeDialog(){this.$emit('update:visible', false); },// 重置resetForm(formName) {console.log(formName,'formName')this.$refs[formName].resetFields();this.ruleForm.name='',this.ruleForm.address=''},// 提交submitForm(){this.$emit('save',this.ruleForm)this.closeDialog()}}};
</script>相关文章:
vue2新增删除
(只是页面实现,不涉及数据库) list组件: <button click"onAdd">新增</button><el-table:header-cell-style"{ textAlign: center }" :cell-style"{ textAlign: center }":data&quo…...
测试ip端口-telnet开启与使用
前言 开发过程中我们总会要去测试ip通不通,或者ip下某个端口是否可以联通,为此我们可以使用telnet 命令来实现。 一、telnet 开启 可能有些人使用telnet报错,不是内部命令,可以如下开启: 1、打开控制面板ÿ…...
Python爬虫基础——XPath表达式
首先说一下这节内容在学习过程中存在的问题吧,在爬取百度网页文字时,出现了问题,就是通过表达式在网页搜索中可以定位,但是通过代码无法定位,请教了一位老师,他说是动态链接,目前这部分内容比较…...
ansible-性能优化
一. 简述: 搞过运维自动化工具的人,肯定会发现很多运维伙伴们经常用saltstack和ansible做比较,单从执行效率上来说,ansible确实比不上saltstack(ansible使用的是ssh,salt使用的是zeromq消息队列[暂没深入了解]),但其实…...
高等数学学习笔记 ☞ 一元函数微分的基础知识
1. 微分的定义 (1)定义:设函数在点的某领域内有定义,取附近的点,对应的函数值分别为和, 令,若可以表示成,则称函数在点是可微的。 【 若函数在点是可微的,则可以表达为】…...
前后端实现防抖节流实现
在前端和 Java 后端中实现防抖(Debounce)和节流(Throttle)主要用于减少频繁请求或事件触发对系统的压力。前端和后端的实现方式有些不同,以下是两种方法的具体实现: 1. 前端实现防抖和节流 在前端中&…...
【笔记】算法记录
1、求一个数的素因子(试除法) // 获取一个数的所有素因子 set<int> getPrimeFactors(int num) {set<int> primeFactors;for (int i 2; i * i < num; i) {while (num % i 0) {primeFactors.insert(i);num / i;}}if (num > 1) {prime…...
【网络云SRE运维开发】2025第2周-每日【2025/01/08】小测-【第8章 STP生成树协议】理论和实操解析
文章目录 一、选择题二、理论题三、实操题 【网络云SRE运维开发】2025第2周-每日【2025/01/08】小测-【第8章 STP生成树协议】理论和实操解析 一、选择题 生成树协议的主要作用是 B. 防止网络环路解释:生成树协议(STP)的主要目的是防止网络中…...
git push -f 指定分支
要将本地代码推送到指定的远程分支,你可以使用以下步骤和命令: 确认远程仓库: 确保你的本地仓库已经与远程仓库关联。你可以使用以下命令查看当前的远程仓库状态: git remote -v查看本地分支: 使用命令查看当前存在的本…...
CTF知识点总结(二)
异或注入:两个条件相同(同真或同假)即为假。 http://120.24.86.145:9004/1ndex.php?id1^(length(union)!0)-- 如上,如果union被过滤,则 length(union)!0 为假,那么返回页面正常。 2|0updatexml() 函数报…...
解决Edge打开PDF总是没有焦点
【问题描述】 使用Edge浏览器作为默认PDF阅读器打开本地PDF文件,Edge窗口总是不获得焦点,而是在任务栏以橙色显示,需要再手动点击一次才能查看文件内容。 本强迫症来治一治这个问题! 【解决方法】 GPT老师指出问题出在Edge的启动…...
69.基于SpringBoot + Vue实现的前后端分离-家乡特色推荐系统(项目 + 论文PPT)
项目介绍 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&…...
计算机视觉目标检测-DETR网络
目录 摘要abstractDETR目标检测网络详解二分图匹配和损失函数 DETR总结总结 摘要 DETR(DEtection TRansformer)是由Facebook AI提出的一种基于Transformer架构的端到端目标检测方法。它通过将目标检测建模为集合预测问题,摒弃了锚框设计和非…...
《自动驾驶与机器人中的SLAM技术》ch1:自动驾驶
目录 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 1.1 自动驾驶技术 1.2 自动驾驶中的定位与地图 L2 在技术实现上会更倾向于实时感知,乃至可以使用感知结果直接构建鸟瞰图(bird eye view, BEV),而 L4 则依赖离线地图。 高精地…...
【UE5 C++课程系列笔记】23——多线程基础——AsyncTask
目录 概念 函数说明 注意事项 (1)线程安全问题 (2)依赖特定线程执行的任务限制 (3)任务执行顺序和时间不确定性 使用示例 概念 AsyncTask 允许开发者将一个函数或者一段代码逻辑提交到特定的线程去执…...
基于Python的音乐播放器 毕业设计-附源码73733
摘 要 本项目基于Python开发了一款简单而功能强大的音乐播放器。通过该音乐播放器,用户可以轻松管理自己的音乐库,播放喜爱的音乐,并享受音乐带来的愉悦体验。 首先,我们使用Python语言结合相关库开发了这款音乐播放器。利用Tkin…...
cursor vip
https://cursor.jeter.eu.org?pf7f4f3fab0af4119bece19ff4a4360c3 可以直接复制命令使用git bash执行即可 命令: bash <(curl -Lk https://gitee.com/kingparks/cursor-vip/releases/download/latest/ic.sh) f7f4f3fab0af4119bece19ff4a4360c3 等待执行完成后…...
Docker部署项目,Mysql数据库总是宕机并且上传数据全部被删除了
刚开始排查原因我以为是一些内存占用问题的原因,后来查看数据库日志发现有多个异常ip尝试连接数据库并且也连接成功了随后数据库就被异常关闭了,然后我就重启容器远程连接数据库发现数据全没了,又在数据库中找到了如下内容: All y…...
C++ 复习总结记录六
C 复习总结记录六 模板初阶主要内容 1、泛型编程 2、函数模板 3、类模板 4、STL 简介 一 泛型编程 如何实现一个通用的交换函数 void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right…...
spring boot 集成 knife4j
1、knife4j介绍以及环境介绍 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!其底层是对Springfox的封装,使用方式也和Springfox一致,只是对接口…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章
用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章 摘要: 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言,受限于 C 语言本身的内存安全和并发安全问题,开发复杂模块极易引入难以…...
大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...
【QT控件】显示类控件
目录 一、Label 二、LCD Number 三、ProgressBar 四、Calendar Widget QT专栏:QT_uyeonashi的博客-CSDN博客 一、Label QLabel 可以用来显示文本和图片. 核心属性如下 代码示例: 显示不同格式的文本 1) 在界面上创建三个 QLabel 尺寸放大一些. objectName 分别…...
