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 相关文章推荐
js 第二代身份证号码的验证机制代码
May 12 Javascript
jquery实现的3D旋转木马特效代码分享
Aug 25 Javascript
javascript单页面手势滑屏切换原理详解
Mar 21 Javascript
怎么限制input的text里输入的值只能是数字(正则、js)
May 16 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
bootstrap table操作技巧分享
Feb 15 Javascript
使用js获取伪元素的content实例
Oct 24 Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
Mar 22 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
Jul 02 Javascript
jquery实现直播视频弹幕效果
Feb 25 jQuery
javascript设计模式 ? 解释器模式原理与用法实例分析
Apr 17 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
几个javascript操作word的参考代码
2009/10/26 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
jquery.form.js实现将form提交转为ajax方式提交的方法
2015/04/07 Javascript
JavaScript记录光标在编辑器中位置的实现方法
2016/04/22 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
浅析Angular2子模块以及异步加载
2017/04/24 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
Python中动态创建类实例的方法
2017/03/24 Python
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python用Pillow(PIL)进行简单的图像操作方法
2017/07/07 Python
python合并同类型excel表格的方法
2018/04/01 Python
启动Atom并运行python文件的步骤
2018/11/09 Python
python2和python3在处理字符串上的区别详解
2019/05/29 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
pip install命令安装扩展库整理
2021/03/02 Python
介绍一下Java的事务处理
2012/12/07 面试题
旅游管理本科生求职信
2013/10/14 职场文书
房地产公司见习自我鉴定
2014/04/28 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
债务纠纷委托书
2014/08/30 职场文书
2014年优质护理服务工作总结
2014/11/14 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
2015年国庆放假通知范文
2015/08/18 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
Python通过loop.run_in_executor执行同步代码 同步变为异步
2022/04/11 Python