vue增删改查的简单操作


Posted in Javascript onJuly 15, 2017

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

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方法。

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

Javascript 相关文章推荐
用cookies实现的可记忆的样式切换效果代码下载
Dec 24 Javascript
文本框中,回车键触发事件的js代码[多浏览器兼容]
Jun 07 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
javascript中加号(+)操作符的一些神奇作用
Jun 06 Javascript
影响jQuery使用的14个方面
Sep 01 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
JQuery ztree 异步加载实例讲解
Feb 25 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
Mar 25 Javascript
vue router-link传参以及参数的使用实例
Nov 10 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
js如何实现元素曝光上报
Aug 07 Javascript
JavaScript实现跟随滚动缓冲运动广告框
Jul 15 #Javascript
Javascript实现基本运算器
Jul 15 #Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 #Javascript
Javascript实现时间倒计时效果
Jul 15 #Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
Jul 15 #Javascript
JavaScript实现时间表动态效果
Jul 15 #Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 #Javascript
You might like
php array_slice函数的使用以及参数详解
2008/08/30 PHP
浅析php插件 HTMLPurifier HTML解析器
2013/07/01 PHP
PHP函数addslashes和mysql_real_escape_string的区别
2014/04/22 PHP
浅谈php和.net的区别
2014/09/28 PHP
php中strtotime函数性能分析
2016/11/20 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
jQuery元素的隐藏与显示实例
2015/01/20 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
DOM操作和jQuery实现选项移动操作的简单实例
2016/06/07 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
信息专业大学生自我评价分享
2014/01/17 职场文书
中学家长会邀请函
2014/02/03 职场文书
乡镇党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年教研工作总结
2014/12/06 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL