vue实现选中效果


Posted in Javascript onOctober 07, 2020

前情提要

好久没有写Vue了,略有生疏,这个东西还是得多用。

下午看到一个需求,选择相册图片作为轮播图显示。接口返回相册列表,用户选一下再扔回去。

直到我看到e.target.className我就知道这个事情不简单。。

Vue是数据驱动

数据驱动这个是我觉得和jQuery不一样的地方。

jQuery是点一下,加个class,移个class。

Vue是点一下,数据记录,然后自动通知视图。

一个是把选中状态保存在了DOM,一个是把选中状态保存在了js数据模型里。

所以在看到了使用Vue然后获取DOM改class的行为,我及时制止了他。话说你都自己搞了,要Vue干嘛。。。

数据驱动和之前的思想 在一起会怎么样?

数据驱动是一个数据到视图的过程,如果你只改视图不改数据。那么他在其他的地方刷新了数据,就有可能导致视图不同步。比如写的时候写了,那么读的时候读出来的有可能不一样,为什么会这样?因为有两个地方可以改呀,Vue把DOM删了,新渲染的没有你写的状态,读的时候读个鬼。想想,这一个碰运气的东西,能好使吗?

Vue怎么实现这个效果

说了那么多废话,先上地址吧,传送门-我写的DEMO 【具体代码都在这里】

下面简单说说三种写法的思路

  1. 选中的id做成一个数组,多维护一个队列。:class="{selected: ~checkSelect(item.id)}"渲染的时候去判断数组里面有那个id没有。
  2. 选中的id做成一个对象,多维护一个对象。:class="{selected: selectList[item.id]}"和前一个相比对象的话,id作为key查找起来方便了很多。这里要注意的是.$set,划重点要考的。
  3. 直接改原对象,多加一个参数。这个不怎么推荐。

到此这篇关于vue实现选中效果的文章就介绍到这了,更多相关vue选中效果内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
关于javascript document.createDocumentFragment()
Apr 04 Javascript
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
MyEclipse取消验证Js的两种方法
Nov 14 Javascript
JS控制一个DIV层在指定时间内消失的方法
Feb 17 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
Feb 16 Javascript
javascript实现回到顶部特效
May 06 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
JS中事件冒泡和事件捕获介绍
Dec 13 Javascript
jquery+ajax实现省市区三级联动效果简单示例
Jan 04 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
详解Angular2组件之间如何通信
Jun 22 Javascript
electron踩坑之dialog中的callback解决
Oct 06 #Javascript
electron踩坑之remote of undefined的解决
Oct 06 #Javascript
9个JavaScript日常开发小技巧
Oct 06 #Javascript
详解ES6中class的实现原理
Oct 03 #Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 #Javascript
vue 虚拟DOM的原理
Oct 03 #Javascript
vue使用video插件vue-video-player的示例
Oct 03 #Javascript
You might like
PHP+MYSQL的文章管理系统(二)
2006/10/09 PHP
CI框架中zip类应用示例
2014/06/17 PHP
PHP弹出对话框技巧详细解读
2015/09/26 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
用cookies实现的可记忆的样式切换效果代码下载
2007/12/24 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
匹配任意字符的正则表达式写法
2010/04/29 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
nodejs教程之环境安装及运行
2014/11/21 NodeJs
jQuery中:checked选择器用法实例
2015/01/04 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
深入理解React高阶组件
2017/09/28 Javascript
vue中element组件样式修改无效的解决方法
2018/02/03 Javascript
vue.js数据绑定操作详解
2018/04/23 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
Python 从subprocess运行的子进程中实时获取输出的例子
2019/08/14 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
2020/02/05 Python
基于opencv实现简单画板功能
2020/08/02 Python
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
机关作风建设整改方案
2014/10/27 职场文书
CSS巧用渐变实现高级感背景光动画
2021/12/06 HTML / CSS
golang实现浏览器导出excel文件功能
2022/03/25 Golang