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 相关文章推荐
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
加载列表时jquery获取ul中第一个li的属性
Nov 02 Javascript
javascript中几个容易混淆的概念总结
Apr 14 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
Bootstrap Modal遮罩弹出层(完整版)
Nov 21 Javascript
实例讲解vue源码架构
Jan 24 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
vue获取data数据改变前后的值方法
Nov 07 Javascript
vue2.x数组劫持原理的实现
Apr 19 Javascript
微信小程序报错: thirdScriptError的错误问题
Jun 19 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开发的一些注意点总结
2010/10/12 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP抽象类与接口的区别实例详解
2019/05/09 PHP
Laravel 读取 config 下的数据方法
2019/10/13 PHP
jQuery Ajax 实例全解析
2011/04/20 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
2016/10/13 Javascript
JavaScript中双向数据绑定详解
2017/05/03 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue+web端仿微信网页版聊天室功能
2019/04/30 Javascript
vue自动路由-单页面项目(非build时构建)
2019/04/30 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
JS实现滑动导航效果
2020/01/14 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python内置函数——__import__ 的使用方法
2017/11/24 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python 实现兔子生兔子示例
2019/11/21 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
台湾专柜女包:KINAZ
2019/12/26 全球购物
手工社团活动方案
2014/02/17 职场文书
个人合伙协议书范本
2014/10/14 职场文书
安全责任书
2015/01/29 职场文书
三严三实·严以修身心得体会
2016/01/15 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL