element-ui 图片上传回显功能(点击修改显示图片,删除,放大)
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
·
需求:用element-ui做后台管理,碰到使用图片上传修改和删除功能,刚开始想点击修改显示放一个img标签,但是和上传成功后的图片框样式不对,还不显示删除放大功能。
方案:查看文档发现,可以使用 file-list 绑定一个数组实现,具体如下
代码:
<template>
<el-table label="操作" width="200">
<template slot-scope="scope">
<el-button type="warning" icon="el-icon-edit" @click="btnAlter(scope.row)" />
<el-button type="danger" icon="el-icon-delete" @click="btnDel(scope.row.id)" />
</template>
</el-table>
<div>
<el-form>
<el-form-item label="轮播图">
<el-upload
ref="bb"
action="服务器地址"
list-type="picture-card"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove" // // 图片删除触发
:on-success="handleSuccess" // 图片上传成功触发
:file-list="echoImgList" // 图片列表
>
<i class="el-icon-plus" />
</el-upload>
<el-dialog :visible.sync="dialogVisible3" append-to-body>
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default{
data(){
return{
echoImgList: [] // 图片列表
addList:{} // 绑定的列表数据
}
},
methods:{
// 点击修改显示图片
// 点击修改获取到当前列表行的数据
btnAlter(data) {
this.addList = Object.assign({}, data) // 把当前行数据复制给绑定数据
// 如果后台返回的图片字符串不为空
if (this.addList.img_list) {
this.echoImgList = [] // 先清空绑定的图片列表
const aa = this.addList.img_list.split(',') // 把图片字符串分割成数组
// 遍历图片数组 push到echoImgList绑定列表 然后点击修改的时候图片就会显示了
aa.forEach((item, index) => {
if (aa.length) {
this.echoImgList.push({
url: item,
name: index + '.png'
})
}
},
// 修改添加图片操作
handleSuccess(response, file, fileList) {
console.log(response)
console.log(file)
console.log(fileList) // 图片上传成功返回的图片数据列表
const aa = []
// 遍历这个列表
fileList.forEach(item => {
// 判断列表中的每一项是否有response属性(图片上传添加的对象和echoImgList添加的对象,里面的属性值不一样)
if (!item.response) {
aa.push(item.url)
} else {
aa.push(item.response.data.fileList[0])
}
})
console.log(aa)
this.addList.img_list = aa
},
// 修改删除某项图片 (方法相同)
handleRemove(file, fileList) {
console.log(file, fileList)
const aa = []
fileList.forEach(item => {
if (!item.response) {
aa.push(item.url)
} else {
aa.push(item.response.data.fileList[0])
}
})
this.addList.img_list = aa
},
}
}
</script>
// 之后就是点确认的时候把参数传给后台就可以了,后台如果要的是图片字符串,记得发送请求之前把数据转换一下
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:2 个月前 )
c345bb45
1 年前
a07f3a59
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update table.md
* Update transition.md
* Update popover.md 1 年前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)