在做后台管理系统的时候,发现element-ui的上传图片在达到上限的时候,后面的上传按钮和上传框不会隐藏,效果图如下:
现在要改成达到上限,隐藏上传框,未达到上限,显示上传框
首先通过浏览器找到了这个上传图片按钮的class名称为 .el-upload–picture-card,然后给组件绑定一个class名,并且要给该组件添加on-change属性(on-change属性就是文件状态改变时的钩子,添加文件、上传成功和上传失败时都会被调用)
<el-form-item label="功能icon" prop="iconInside">
<el-upload
class="upload-demo"
:action="imgUpload"
:limit="1"
:file-list="imageUrl"
list-type="picture-card"
:on-success="uploadSuccess"
:on-exceed="handleExceed"
:before-upload="beforeAvatarUpload"
:on-remove="handleRemove"
:on-error="uploadError"
:on-change="handleEditChange"
:class="{hide:hideUploadEdit}"
:disabled="isAble">
<i slot="default" class="el-icon-plus"></i>
<div slot="tip" class="el-upload__tip">40px*40px,支持JPG、JPEG、PNG格式,小于50kb</div>
</el-upload>
</el-form-item>
设置hideUploadEdit的初始值
data() {
return {
hideUploadEdit:false,
}
}
on-change 事件,当照片个数是达到上限,hideUpload 为true,并且向上传组件组件添加一个名为hide的class名
handleEditChange(file, fileList) {
let vm = this
vm.hideUploadEdit = fileList.length >= 1
},
当照片要删除的时候,与on-change事件一样,对照片个数进行判断
handleRemove(file, fileList) {
let vm = this
vm.hideUploadEdit = fileList.length >= 1
},
css代码
.hide .el-upload--picture-card {
display: none;
}
.hide .el-upload–picture-card {
display: none;
}