vue实现选中效果

前情提要

很久没有写Vue了,略有生疏,这个东西仍是得多用。
下午看到一个需求,选择相册图片做为轮播图显示。接口返回相册列表,用户选一下再扔回去。
直到我看到e.target.className我就知道这个事情不简单。。数组

Vue是数据驱动

数据驱动这个是我以为和jQuery不同的地方。
jQuery是点一下,加个class,移个class
Vue是点一下,数据记录,而后自动通知视图。
一个是把选中状态保存在了DOM,一个是把选中状态保存在了js数据模型里。
因此在看到了使用Vue而后获取DOMclass的行为,我及时制止了他。话说你都本身搞了,要Vue干吗。。。.net

数据驱动和以前的思想 在一块儿会怎么样?

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

Vue怎么实现这个效果

说了那么多废话,先上地址吧,传送门-我写的DEMO
下面简单说说三种写法的思路对象

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

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

相关文章
相关标签/搜索