van-uploader怎么回显数据比较好

一般使用van-uploader传递附件给后端之后,在编辑回显的时候,返回值类似这样:
在这里插入图片描述
而van-uploader里面绑定值的类型是File这样的类型,如果是图片,还需要能够点击预览,只是根据回显的数据,无法做到。
我的解决办法是,将van-uploader放到van-field的#input里面,将回显来的附件,放到van-uploader的前面。

<van-field name="uploader" label="">
    <template #input>
        <div v-for="(item, index) in fileList" :key="index" class="file-item">
            <van-image width="80" height="80" :src="item.src" />
            <div class="del" @click="delImg(item, index)">
                <van-icon name="cross" color="#fff" size="11" />
            </div>
        </div>
        <van-uploader v-model="form.fileList" :max-size="10 * 1024 * 1024" accept="image/*"
            :after-read="afterRead" :before-delete="deleteImg" />
    </template>
</van-field>

回显来的附件数据和上传的附件数据是分开的,这样二者的删除是互不影响的。然后为回显元素加上删除的图标样式,这样做的效果就和原生附件上传很相似了。
在这里插入图片描述
另外,如果回显的附件信息不是图片,可以只显示文件名,具备删除功能即可。
在编辑提交的时候,对原来的附件信息,只需要传递附件的id给后端;对新增的附件,就传递File给后端,这样二者之间就不需要判断是否有重复的情况,简化了代码逻辑。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vue-simple-uploader 是一个用于 Vue.js 的简单上传组件,如果需要实现数据回显,可以将已上传的文件的 URL 存储在数据库中,并在需要回显的页面中将 URL 传递给 vue-simple-uploader 组件的 props 中。 具体实现方法如下: 1. 在上传文件时,将文件上传至服务器,并将文件的 URL 存储在数据库中。 2. 在需要回显的页面中,从数据库中获取已上传文件的 URL,并将其传递给 vue-simple-uploader 组件的 props 中。 例如,假设我们已经将一个名为 file.jpg 的文件上传至服务器,并将其 URL 存储在数据库中。现在需要在页面中将该文件回显出来,可以按照以下步骤进行: 1. 在页面中引入 vue-simple-uploader 组件,并定义一个 data 属性,用于存储已上传文件的 URL。 ```html <template> <div> <vue-simple-uploader ref="uploader" :uploadUrl="uploadUrl" :headers="headers" :autoUpload="false" :showUploadBtn="false" :showCancelButton="false" :fileSizeLimit="fileSizeLimit" @beforeUpload="beforeUpload" @fileAdded="fileAdded" /> <div> <img :src="imageUrl" /> </div> </div> </template> <script> import VueSimpleUploader from "vue-simple-uploader"; export default { components: { VueSimpleUploader, }, data() { return { imageUrl: "", // 存储已上传文件的 URL uploadUrl: "/api/upload", headers: { Authorization: "Bearer " + localStorage.getItem("token"), }, fileSizeLimit: 10 * 1024 * 1024, // 限制文件大小为 10MB }; }, methods: { beforeUpload() { // ... }, fileAdded() { // ... }, }, }; </script> ``` 2. 从数据库中获取已上传文件的 URL,并将其赋值给 imageUrl 属性。 ```javascript import axios from "axios"; export default { data() { return { imageUrl: "", // 存储已上传文件的 URL // ... }; }, mounted() { // 从数据库中获取已上传文件的 URL axios .get("/api/getImageUrl") .then((response) => { if (response.data.success) { this.imageUrl = response.data.imageUrl; } }) .catch((error) => { console.log(error); }); }, // ... }; ``` 3. 在页面中使用 imageUrl 属性来显示已上传文件的内容。 ```html <div> <img :src="imageUrl" /> </div> ``` 这样就可以实现 vue-simple-uploader数据回显了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值