vue如何实现表格增删改查效果

发布时间:2021-04-23 14:34:54

来源:亿速云

阅读:90

作者:小新

小编给大家分享一下vue如何实现表格增删改查效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

为什么要使用Vue

Vue是一款友好的、多用途且高性能的JavaScript框架,使用vue可以创建可维护性和可测试性更强的代码库,Vue允许可以将一个网页分割成可复用的组件,每个组件都包含属于自己的HTML、CSS、JavaScript,以用来渲染网页中相应的地方,所以越来越多的前端开发者使用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数组渲染出来:

修改 | 删除

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

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展示用户可能要查询的词语:

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

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

以上是“vue如何实现表格增删改查效果”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

html增删改后让table自动刷新,vue如何实现表格增删改查效果相关推荐

  1. uni-app以及微信小程序页面跳转后实现页面自动刷新

    uni-app以及微信小程序页面跳转后实现页面自动刷新 在程序中需要从一个switch TAb页面跳转到另一个switch Tab页面,但是页面跳转之后,发现添转后的页面不会执行onload里面的刷新 ...

  2. 微信小程序上传图片后 开发者工具自动刷新问题

    问题描述:通过wx.uploadFile上传图片后,小程序端还没来得及显示服务端返回已成功上传的文件信息,小程序开发者工具就自动刷新,不论你如何打断点,都不会停下来,导致无法保存上传的数据. 在网上找 ...

  3. chrome LiveReload – 修改网页源代码后帮你自动刷新浏览器

    在本地写网页代码,通常都是保存以后再在浏览器里刷新一遍看看效果,刷新这个可真是体力活,不过懒人也有福了,因为有了 LiveReload. LiveReload 是一款跨平台的软件,在 OS X.Win ...

  4. vbs 关闭excel的piovt table自动刷新

    代码如下(拷贝,将文件后缀修改为.vbs即可): 注:如果在运行时包字节错误,此问题是vbs文件编码在电脑中没有.简单的解决办法就是修改文件的编码格式(用text打开,另存为,选择编码格式.这里可以挨 ...

  5. vue的html自动刷新,Vue页面刷新记住页面状态的实现

    环境 vue项目,页面有搜索.筛选项等. 需求 页面跳转,切换或者刷新,希望可以记住用户在页面的筛选状态 方案v1 vue有提供一种缓存组件的解决方案 - keep-alive. 缓存不活动的组件实例 ...

  6. vue的html自动刷新,vue项目刷新当前页面的方法

    想必大家在刨坑vue的时候也遇到过下面情形:比如在删除或者增加一条记录的时候希望当前页面可以重新刷新或者如下面这种: 如果希望点击确定的时候,Dialog 对话框关闭的时候,当前http://loca ...

  7. BJUI接受TabID实现添加或编辑后自动刷新页面

    场景 借助于BJUI框架,不管是添加还是编辑,都要共用同一个页面,执行同一个save方法. 参照: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...

  8. 提交按钮提交后页面自动刷新

    在表单的提交按钮如果没有type属性,在点击提交按钮后页面会自动刷新,导致使用js改变的页面元素被刷新掉了 <button type="submit" style=" ...

  9. Express结合Webpack的全栈自动刷新

    在以前的一篇文章BrowserSync,迅捷从免F5开始中,我介绍了BrowserSync这样一个出色的开发工具.通过BrowserSync我感受到了这样一个理念:如果在一次ctrl + s保存后可以 ...

最新文章

  1. c++ stack 的使用
  2. 资源 | 5月Python好文TOP 10新鲜出炉,你都看了吗?
  3. RHEL5.5 安装 oracle 11g
  4. Hadoop参数汇总
  5. C语言string.h常用函数总结
  6. 供应商管理(Supplier Management)
  7. IDEA Terminal命令行运行javac时,一个类运用另一个类的方法找不到符号的问题
  8. 济南长清104国道科目三考试流程(转载)
  9. selenium===使用docker搭建selenium分布式测试环境
  10. OPC通信原理在数采中的应用
  11. Android开发之限制输入框长度 | 限制EditText输入长度 | 限制AppCompatEditText长度的方法
  12. Oracle 怎么开启,关闭归档
  13. trie树 java 开源_用于实现Trie的内存java应用程序中的最佳开源
  14. pytest 测试框架学习(14):pytest.warns
  15. 【NOIP2014】解方程【秦九韶】【高精度处理】
  16. 用批处理文件替换或删除文件名中的字符
  17. KRnano打开黑屏: FATAL ERROR,【解决办法】
  18. Audience Insights被下架后,Facebook广告定位的最佳替代方案
  19. DirectX 性能优化
  20. 如何运用dos命令进入指定目录

热门文章

  1. c语言教学系统设计报告,C语言在线教学系统的设计与实现.doc
  2. 渗透测试用工具(三)layer子域名挖掘机
  3. win7系统Nvidia控制面板怎么设置?
  4. 老司机软件排行前10的有这个
  5. PHP统计当前在线人数
  6. 关注和实际不符_商品房层高与合同约定不符的相关法律问题
  7. macbook air可以运行c语言吗,MacBook Air
  8. 新手商家做Shopee的马来站点有什么运营技巧,快速上手教程
  9. 千里走单骑:08-北京到上海骑记--Day7.赛风雨
  10. win10下安装Prodave6.2