vue增删改查的简单操作

发布时间 - 2026-01-11 02:21:31    点击率:

本文为大家分享了vue增删改查的简单操作,供大家参考,具体内容如下

我们把这些用户信息保存到list的数组中,然后增删改查就在这个数组上进行:

list: [
  {
    username: 'aaaaa',
    email: '123@qq.com',
    sex: '男',
    province: '北京市',
    hobby: ['篮球', '读书', '编程']
  },
  {
    username: 'bbbbb',
    email: 'bbbbbbb@163.com',
    sex: '女',
    province: '河北省',
    hobby: ['弹琴', '读书', '插画']
  }
  // ...
]

这里面的表单有:文本输入框,单选按钮,select选择框,复选框等。

1. 展示数据

我们的数据都放在数组list中,但是这里并不直接对list对循环输出,而是先把list中的数据给一个数组slist,对slist进行循环输出。因为我们在后面的查询功能中需要对数据进行过滤,数组list一直保存着原始数据(包括新增、修改后或已删除后),而数组slist只负责展示。

在vue中提供一个setSlist方法,将需要展示的数据给了数组slist:

// 获取需要渲染到页面中的数据
setSlist(arr) {
  this.slist = JSON.parse(JSON.stringify(arr));
}

然后在html中使用v-for把slist数组渲染出来:

<tr v-cloak v-for="(item, index) of slist">
  <td></td>
  <td></td>
  <td></td>
  <td></td>
  <td></td>
  <td></td>
  <td><a href="javascript:;" @click="showOverlay(index)">修改</a> | <a href="javascript:;" @click="del(index)">删除</a></td>
</tr>

在操作这一栏中,给修改和删除操作绑定上事件。

2. 增加和删除功能 

把增加功能和删除合并到一起,是这两个功能相对来说都比较简单。

增加用户时使用push方法,把用户的信息添加到list数组的最后:

this.list.push({
  username: 'ffff',
  email: 'fffffff@163.com',
  sex: '女',
  province: '河南省',
  hobby: ['弹琴', '插画']
});

这样就能添加一位ffff的用户了。

删除用户时,通过splice(index, 1),可以删除index位置的数据,页面上的数据自动就会更新。

3. 修改功能

假设我们弹层里的数据是selectedlist,那么每次修改时,把index位置的数据给了selectedlist,然后在弹层中修改selectedlist。我们也能看到修改数据的类型: 文本框(用户名,邮箱),单选按钮(性别),select选择框(所在省份),多选框(爱好),这里我们主要练习的是表单处理(https://cn.vuejs.org/v2/guide/forms.html)。弹层是否显示用变量isActive来控制:

// 修改数据
modifyData(index) {
  this.selected = index; // 修改的位置
  this.selectedlist = this.list[index];
  this.isActive = true;
}

有没有发现一个问题,当修改弹层中的信息时,表格中的数据也同步更新了。可是我们本身是希望当点击保存按钮时,才把弹层中的数据保存到表格里。问题的根源就出在这里:

this.selectedlist = this.list[index];

因为list[index]是个Object类型的数据,若使用=赋值,则赋值操作为浅度拷贝(把数据的地址赋值给对应变量,而没有把具体的数据复制给变量,变量会随数据值的变化而变化),selectedlist与list[index]使用相同的数据地址,互相引起数据值的变化。因此这里我们需要进行深度拷贝:

this.selectedlist = JSON.parse( JSON.stringify(this.list[index]) ); // 先转换为字符串,然后再转换

当用户修改数据后,selectedlist就会发生变化,点击保存按钮时,将数据重新保存到index位置:

/*
 this.list 数据数组
 this.selected 刚才修改的位置
 this.selectedlist 需要保存的数据
*/
Vue.set(this.list, this.selected, this.selectedlist);

4. 查询功能

在第1小节中我们已经说过,在页面表格中展示的是slist中的数据,就是为了方便执行查询操作:

// 获取需要渲染到页面中的数据
setSlist(arr) {
  this.slist = JSON.parse(JSON.stringify(arr));
}

每次根据某些条件将过滤后的数据赋值给slist数组,展示出查询后的数据。这里我们的查询实现了两个小功能:

1、用户在输入某个字符后,自动在输入框下方用列表展示出用户可能要查询的词语(如用户名等)
2、同步更新表格中的数据

这里我们通过用户名和邮箱进行查询,因此在过滤数据时,需要检测用户名和邮箱是否含有查询的单词。我们先给输入框绑定一个input事件,同时用datalist展示用户可能要查询的词语:

<input type="text" placeholder="search" @input="search" list="cars" class="search">
<datalist id="cars">
  <option v-for="item in searchlist" :value="item"></option>
</datalist>

search功能的实现,searchlist为在输入框下方展示的可能要搜索的词语,ss数组则保存过滤后的数据,当循环完毕后,设置调用setSlist方法修改slist数组:

每当用户输入或者删除一个字符时都会调用search方法,执行查询操作,当用点击展示词语列表时,也会调用search方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# vue  # 增删改查  # Vue使用Element实现增删改查+打包的步骤  # VUE+Element实现增删改查的示例源码  # vue实现表格增删改查效果的实例代码  # vue实现表格数据的增删改查  # Vue3实现登录表单验证功能  # vue表单验证自定义验证规则详解  # vue实现表单验证小功能  # vue实现表单验证功能  # Vue数据增删改查与表单验证的实现流程介绍  # 输入框  # 的是  # 就会  # 给了  # 层中  # 表单  # 绑定  # 单选  # 查询功能  # 同步更新  # 这一  # 是个  # 放在  # 就在  # 也会  # 就能  # 河北省  # 河南省  # 也能  # 说过 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: html5audio标签播放结束怎么触发事件_onended回调方法【教程】  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  Swift开发中switch语句值绑定模式  Swift中swift中的switch 语句  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何将凡科建站内容保存为本地文件?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  QQ浏览器网页版登录入口 个人中心在线进入  如何快速配置高效服务器建站软件?  nodejs redis 发布订阅机制封装实现方法及实例代码  Laravel如何使用Eloquent进行子查询  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  常州企业网站制作公司,全国继续教育网怎么登录?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  Android 常见的图片加载框架详细介绍  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  b2c电商网站制作流程,b2c水平综合的电商平台?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何在IIS中新建站点并配置端口与物理路径?  实例解析Array和String方法  C++用Dijkstra(迪杰斯特拉)算法求最短路径  高端智能建站公司优选:品牌定制与SEO优化一站式服务  油猴 教程,油猴搜脚本为什么会网页无法显示?  EditPlus 正则表达式 实战(3)  如何快速搭建支持数据库操作的智能建站平台?  Laravel怎么调用外部API_Laravel Http Client客户端使用  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  三星网站视频制作教程下载,三星w23网页如何全屏?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  高端建站三要素:定制模板、企业官网与响应式设计优化  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  Laravel如何实现事件和监听器?(Event & Listener实战)  如何基于PHP生成高效IDC网络公司建站源码?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  如何用免费手机建站系统零基础打造专业网站?  iOS中将个别页面强制横屏其他页面竖屏  如何在IIS中新建站点并解决端口绑定冲突?  js实现获取鼠标当前的位置  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在Tomcat中配置并部署网站项目?  如何快速生成凡客建站的专业级图册?  香港服务器部署网站为何提示未备案?