# el-upload上传列表实现 展开 收起
#### 无图言*,所以先上最终效果图(想参考代码的可以直接滑到最后)
### 具体实现思路
注意: 每个人的项目环境以及需求,都不尽相同,所以这里仅仅提供思路.
#### 看看没有收起之前
可以看到,没有实现收起之前,如果一直上传文件,文件列表会一直向下延伸.......
如果需求的上传数量少的话,还可以接受,但是,让我们看看需求
???? 30 张
可见,为了尽可能的减少对页面的影响,只能弄个展开以及收起了!
#### 思考
展开以及收起,无非是控制显示数量,那么我们就要对症下药,先看看什么属性与上传的文件数量有关
这时候我们就要去看 element-ui 的文档了
这里可以看到 file-list 这个属性与我们的上传文件列表有关,那我们就从它下手!
这里我们用 slice() 方法 试试
关键代码:
注意:我这因为有多项附件要上传,所以列表是个数组
相应的每一项是一个item,所以这里item.accessory才是我图片存储的地方
根据你们的实际数据格式看着来,不要完全照抄
```vue
:file-list="item.accessory.slice(0, 1)"
```
随后可以看到,不管我们怎么上传图片,只会显示第一张
那么到这里,我们限制显示数量的需求达到了
然后不要着急,这时候我们先去弄个按钮出来,饭要一口一口吃嘛
关键代码:
```vue
// textFlg 是我自定的 类似于开关
<div v-show="item.accessory.length > 1" class="more" @click="res=>{item.textFlg = !item.textFlg}">
```
这个按钮的整体思路是,只有上传图片大于1张才显示; 默认显示当前上传的文件数量-1;每当点击之后,切换状态.
之后就能实现这种效果,样式啥的我就不在这里展开了,主要是传递一个思路!
限制显示数量又了,切换效果有了,那么现在就剩展开了!
上面我们这条代码吗?
```vue
:file-list="item.accessory.slice(0, 1)"
```
这里我们将 slice() 方法 的第二个参数 固定成了 1 ; 这样就始终只显示一条!
那么我们要是根据某个状态来切换这个1,不就达到我们想要的展开了嘛?
说干就干!
经过一番摸索之后! 实现了切换显示数量
```vue
:file-list="item.accessory.slice(0, item.textFlg ? item.accessory.length : 1)"
```
这里三元表达式的意思是 textFlg === true 吗? 如果为true 就显示与上传列表数组长度相等的数据 :(否则) 显示1
textFlg 就是我们用来控制按钮文字的状态,所以毫无疑问他们俩可以共用!
至此,我们就实现了如最终效果图的切换
以上,就是大概的实现思路,当然例如样式之类的等等细节,本文都选择直接略过,还请谅解.
最后我会贴出我的所有代码,以及数据格式.
当然,这肯定不是最优解,不过这是我的思路,有别的观点或者解决方案欢迎讨论~
### 仅供参考! 仅供参考! 仅供参考!
我的数据格式:
```json
details:[
textFlg: false,
]
```
我的示例源码:
```vue
<el-upload
ref="upload"
list-type="text"
:style="{ width: item.accessory.length > 1 ? '140px' : '100%' }"
:action="$store.state.config.uploadConfig.actionUrl"
:headers="{ Authorization: Bearer ${$store.state.token} }"
:on-preview="handlePreview"
:auto-upload="true"
:file-list="item.accessory.slice(0, item.textFlg ? item.accessory.length : 1)"
:on-success="
(res, file) => {
return handleSuccess(res, i, file)
}
"
:on-remove="handleRemove"
:before-upload="beforeAvatarUpload"
multiple
:limit="30"
:on-exceed="handleExceed"
:disabled="!isEdit"
>
<div v-show="item.accessory.length > 1" class="more" @click="more(item)">
{{ item.textFlg ? '收起' : +${item.accessory.length - 1} }}
```
样式:
```css
.more {
margin: 0 0 0 110px;
cursor: pointer;
width: 45px;
height: 20px;
background: #ebeef5;
text-align: center;
border-radius: 5px;
position: absolute;
bottom: 12px;
right: 5px;
}
```
如果能帮到你,是我最大的荣幸!

el-upload上传列表实现 展开 收起的更多相关文章

  1. 使用elementUI的时候,使用Upload 上传的时候,使用 list-type 属性来设置文件列表的样式,before-upload方法失效

    最近在做项目的时候,使用elementUI的时候,使用Upload 上传的时候,before-upload方法失效. 情况下:使用 list-type 属性来设置文件列表的样式. 最终的优化之后:(演 ...

  2. element-ui Upload 上传组件源码分析整理笔记(十四)

    简单写了部分注释,upload-dragger.vue(拖拽上传时显示此组件).upload-list.vue(已上传文件列表)源码暂未添加多少注释,等有空再补充,先记下来... index.vue ...

  3. UI标签库专题四:JEECG智能开发平台 Upload(上传标签)

     1. Upload(上传标签) 1.1.  參数 属性名 类型 描写叙述 是否必须 默认值 id string 上传控件唯一标示 是 null name string 控件name 是 null ...

  4. React实战之Ant Design—Upload上传_附件上传

    React实战之Ant Design—Upload上传_附件上传 Upload组件大家都在官方文档中看过了,但写的时候还是会遇到许多问题,一些新手看了文档后感觉无从下手,本文过多的简绍就不说了,直接看 ...

  5. Struts Upload上传文件

    1.Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.te ...

  6. Nginx的Upload上传模块

    前段时间做一个项目,需要上传文件,差不多需要20M左右,普通用php处理会比较麻烦,经常超时,而且大量占用资源.于是搜索了下,决定用nginx的upload上传模块来处理. 你可以在这里:http:/ ...

  7. And Design:拓荒笔记——Upload上传

    And Design:拓荒笔记——Upload上传 上传前

  8. upload 上传 加token 在 :headers='headers' 注意 不要直接写$refs.upload.headers = {} 这样vue会警告 修改组件内部变量

    upload 上传 加token 在 :headers='headers' 注意 不要直接写$refs.upload.headers = {} 这样vue会警告 修改组件内部变量 <Upload ...

  9. element-ui upload上传组件问题记录

    element-ui upload上传组件遇到的问题

随机推荐

  1. OO随笔之纠结的第二单元——多线程电梯

    综述 主要任务就是写一个电梯模拟器,读入每一个人的请求然后让电梯把他们送到想去的地方. 从第一次到第三次作业,三次的主要任务都是相同的,但是每次都增加了很多的细节,每次的难度都逐步增长,电梯复杂度和瞎 ...

  2. 常用加密算法学习总结之数字证书与TLS/SSL

    数字证书 对于一个安全的通信,应该有以下特征: 完整性:消息在传输过程中未被篡改 身份验证:确认消息发送者的身份 不可否认:消息的发送者无法否认自己发送了信息 显然,数字签名和消息认证码是不符合要求的 ...

  3. sosreport命令 然后diff 正常的操作系统例如centos

    nux学习笔记:有用的linux命令  发表于 2018-06-25 |  分类于 linux|  字数统计: 1,269 |  阅读时长 ≈ 6 写在前面 这着笔记,整理一些网上搜集到有用的linu ...

  4. Linux_yum仓库管理

    一.yum配置本地仓库 1.挂载光盘 [root@localhost ~]# mount /dev/sr0 /mnt/ [root@localhost ~]# df -hT 文件系统 类型 容量 已用 ...

  5. OpenStack平台功能性测试工具Tempest安装

    社区对OpenStack平台功能性的测试工具采用Tempest,性能测试采用Rally. 1.什么是Tempest tempest├── api # API的测试集├── cli # OpenStac ...

  6. IDEA 常用快捷键列表【建议收藏】

    编辑代码 快捷键 说明 Alt+Enter 导入包.自动变量命名等(万能快捷键) Ctrl+X 删除行 Ctrl+Y 删除当前行 Ctrl+D 复制行 Alt+Shift+Up/Down或Ctrl+S ...

  7. docker命令补全

    安装docker自带包: source /usr/share/bash-completion/completions/docker 缺少下面的包,TAB会报错 yum install -y bash- ...

  8. windows 批量删除用户

    @echo off for %%I in (longxj,liujr,laijx,yuanyq,yanghui,xiejz,zhanlei,zifz,yuansy,denglf,lilan,chenz ...

  9. Centos7 vsftpd虚拟用户权限控制(vsftpd虚拟用户限制IP访问)

    实验目标:(新增限制虚拟机用户登陆的IP) 实现在同一跟目录下对admin,upload,download三个虚拟用户的不同权限的控制.具体权限控制列表如下: 用户名 权限说明 admin 管理员,可 ...

  10. nginx 配置 conf stream

    nginx从1.9.0版本开始,新增了ngx_stream_core_module模块,使nginx支持四层负载均衡.默认编译的时候该模块并未编译进去,需要编译的时候添加--with-stream参数 ...