博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vue实现选中效果
阅读量:5757 次
发布时间:2019-06-18

本文共 817 字,大约阅读时间需要 2 分钟。

前情提要

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

下午看到一个需求,选择相册图片作为轮播图显示。接口返回相册列表,用户选一下再扔回去。
直到我看到e.target.className我就知道这个事情不简单。。

Vue是数据驱动

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

jQuery是点一下,加个class,移个class
Vue是点一下,数据记录,然后自动通知视图。
一个是把选中状态保存在了DOM,一个是把选中状态保存在了js数据模型里。
所以在看到了使用Vue然后获取DOMclass的行为,我及时制止了他。话说你都自己搞了,要Vue干嘛。。。

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

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

Vue怎么实现这个效果

说了那么多废话,先上地址吧,

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

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

在我写完代码,写文章的时候,需求就变了。难受。。。。去改代码。。。。

在我写完代码,写文章的时候,需求就变了。难受。。。。去改代码。。。。
在我写完代码,写文章的时候,需求就变了。难受。。。。去改代码。。。。

转载地址:http://gqvkx.baihongyu.com/

你可能感兴趣的文章
javascript之闭包深入理解(二)
查看>>
南京邮电大学java程序设计作业在线编程第五次作业
查看>>
[工具类]泛型集合转换为DataTable
查看>>
[MySql]锁表与解锁
查看>>
React:JSX
查看>>
python全栈开发笔记---------数据类型-----集合set
查看>>
uva-565-枚举
查看>>
自动文档摘要评价方法:Edmundson,ROUGE
查看>>
题解[ZJOI2007]矩阵游戏
查看>>
10个顶级Web移动开发JavaScript框架推荐
查看>>
<br/>属性
查看>>
Python中__get__ ,__getattr__ ,__getattribute__用法与区别?
查看>>
树的前、中、后序遍历
查看>>
org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in receiveBlock for block
查看>>
平行宇宙和確定世界——讀阿諾爾德「常微分方程」前幾頁的感悟
查看>>
在Ubuntu上设置gmail邮件通知
查看>>
陶哲轩实分析 定义 7.2.1(形式无限级数) 的一点注记
查看>>
js原生API----查找dom
查看>>
css3各种loading写法
查看>>
elixir 入门笔记
查看>>